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

时间:2017-11-23 02:22:08

标签: python csv os.walk subdirectory

学习Python作为我论文的一部分,我完全是自学成才/不知道我在做什么;道歉,如果这是微不足道的。 在网上搜了一会儿,找不到一个“普通英语”的答案,我也无法弄清楚如何自己做。我通过潜伏从这个网站收集了许多知识,所以我希望你能帮忙。

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

例如,这很好用:

top = r'C:\Users\Brock\Desktop\Masters_Python&Data\WRF_data\ctl\2006\01'
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)中的第一个文件不存在。在“文件”一词之后还会在那里抛出一个随机的“b”:

FileNotFoundError: File b'1136072700_KSUN_wrf6x6.csv' does not exist 

如果top类似于“r'C:\ Users \ Brock \ Desktop \ Masters_Python& Data \ WRF_data \ ctl \ 2006”,则会发生这种情况。

再次,如果这是一个愚蠢的问题我会道歉,但是我宁愿问一个知道而不是我的人,花一个星期的时间来摆弄某个地方。

干杯

1 个答案:

答案 0 :(得分:0)

您需要使用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)