Python os.walk,处理子目录中的文件

Python os.walk, working with files in subdirectories

学习 Python 作为我论文的一部分,我完全是自我 taught/don 不知道自己在做什么;如果这是微不足道的,我们深表歉意。 在网上搜索了一段时间,找不到 "plain english" 的答案,我也不知道如何自己做。我通过潜伏从这个网站收集了很多关于知识的花絮,所以我希望你能提供帮助。

我有一个文件夹,其中包含以年份(2001、2002、2003 等)命名的文件夹,每个文件夹内都有一个用于每个月的编号文件夹(01、02、03 等)。其中每一个都是我正在使用的 csv 文件。我已经设置了一个程序来加载它们并分析它们,但它只在不涉及子目录时才有效。否则它告诉我该文件不存在。只是试图让 python 查看这些子目录中的 csv 文件并通过程序 运行 它们。

例如,这很好用:

top = r'C:\Users\Brock\Desktop\Masters_Python&Data\WRF_data\ctl06'
os.chdir(top)    #change current directory to 'top' object
for root,dirs,files in os.walk(top, topdown = True):
    for file in files:
    #blah blah program goes here

然而,当我尝试 运行 时:

top = r'C:\Users\Brock\Desktop\Masters_Python&Data\WRF_data\ctl'
os.chdir(top)
for root,dirs,files in os.walk(top, topdown = True):    
    for file in files:
    #blah blah program goes here

它告诉我第一个文件夹(01)中的第一个文件不存在。还在 "File":

之后随机抛出一个 "b"
FileNotFoundError: File b'1136072700_KSUN_wrf6x6.csv' does not exist 

如果 top 也类似于 "r'C:\Users\Brock\Desktop\Masters_Python&Data\WRF_data\ctl06',就会发生这种情况。

再次,如果这是一个愚蠢的问题,我深表歉意,但我宁愿问知道的人,也不愿我摆弄一个星期才能找到答案。

干杯

您需要使用glob:

import glob
import csv

path = r'C:\Users\Brock\Desktop\Masters_Python&Data\WRF_data\ctl\*\*\*.csv'
for file in glob.iglob(path):
   with open(file) as f:
     reader = csv.reader(f, delimiter=',')
     for row in reader:
         do_something_with(row)