我有一些文件分散在目录中的许多不同文件夹中,我想知道是否有一种方法可以大块地循环访问这些文件夹。
Here's a picture of my directory tree
我想浏览我的2010A文件夹中的所有文件,然后浏览2010B文件夹,然后移至2011A和2011B等。
我的目标是修改当前的脚本,该脚本仅适用于单个文件夹,以便其像这样流动:
开始:根文件夹>
2010> 2010A>
输出到csv> 重新启动循环>
2010B>在最后一行之后添加csv
重新启动循环> 2011> 2011A>
在最后一行之后添加csv>,依此类推...
这可能吗?
这是我的代码,如果我在包含txt文件的单个文件夹(例如2010A文件夹)上运行它,则该代码当前有效:
import re
import pandas as pd
import os
from collections import Counter
#get file list in current directory
filelist = os.listdir(r'root_folder\2010\2010A')
dict1 = {}
#open and read files, store into dictionary
for file in filelist:
with open(file) as f:
items = f.read()
dict1[file] = items
#create filter for specific words
filter = [ "cat", "dog", "elephant", "fowl"]
dict2 = {}
# count occurrence of words in each file
for k, v in dict1.items():
list= []
for i in filter:
list.extend(re.findall(r"{}".format(i),v))
dict2[k] = dict(Counter(new))
dict3 ={}
# count total words in each file, store in separate dictionary
dict3 = {k: {'total':len(v)} for k,v in dict1.items()}
join_dict = {}
#join both dictionaries
join_dict = {k:{**dict2[k], **dict3[k]} for k in out}
#convert to pandas dataframe
df = pd.DataFrame.from_dict(join_dict, orient='index').fillna(0).astype(int)
#output to csv
df.to_csv(r'path\output.csv',index = True, header=True)
我有需要更换的感觉
for file in filelist:
与for (root,dirs,files) in os.walk(r'root_folder', topdown=True):
但是我不确定如何,因为我一般对编码和python还是很陌生。
答案 0 :(得分:0)
您可以使用glob
来获取类似文件的列表
import glob
files = glob.glob('root_folder\\*.txt', recursive=True)