我要为主文件夹中的所有子文件夹制作单独的字典。
我有一个带有子文件夹的文件夹,其中有.txt文件,我将其中的“描述”隔离开来,并添加到带有计数的字典中。
我可以正确地使用整个文件夹,但不能将每个子文件夹分开。
子文件夹结构如下:
├───Locatie_5
│ ├───Stacked_Batch_1
│ ├───Stacked_Batch_2_Top_Bottom
│ ├───Stacked_Loc5_Hab1_05mm
│ ├───Stacked_Loc5_Hab1_1mm
│ ├───Stacked_Loc5_Hab_General_Somesinglesmissingstill
│ └───Stacked_Loc_5_Hab2_Ishetwel5niet4
├───Stacked_Half_loc_4_Hab6_Half_loc_2_4
├───Stacked_Last_Session_Rest
├───Stacked_locatie_2_4
├───Stacked_Loc4_Hab6_25mm
└───Stacked_Locatie_2
理想情况下,理想的输出字典应以文件夹命名(如果是大写字母,则在子文件夹之后),列出在文件夹的.txt文件中找到的无脊椎动物宏分类名称及其出现的次数,如下所示:
在下面的代码中,将所有描述从主文件夹及其子文件夹中汇总到一个字典中是可行的。我认为至少从第7行的dirs循环是下一步是很明智的。
对我来说,在循环中创建字典也是有意义的,然后从那里获取文件夹路径作为字符串并为其指定字典名称。
所以我想要的是以下内容:
我该怎么办?
旁注:我只需要获取描述和计数,并知道它们最终从哪个文件夹放置到另一个文件(.txt,工作表或数据库)中,所以也许会有不同之处解决方案,而不是先将它们添加到字典中?
import os
import re
taxa_Counts = dict()
for subdir, dirs, files in os.walk("D:/MacroInvertebrates_Stacked"):
for dir in dirs:
for file in files:
#print os.path.join(subdir, file)
filepath = subdir + os.sep + file
if not filepath.endswith(".txt"):
continue
Current_File = open(filepath)
for line in Current_File:
line = line.rstrip()
#print(line)
if line.startswith("Description"):
taxa = line.split()[2:3]
#print(line)
#print(Taxon)
for taxon in taxa:
taxa_Counts[taxon]=taxa_Counts.get(taxon,0) +1
print(taxa_Counts)
答案 0 :(得分:0)
我只对第一部分进行了修改,因为您的描述提取部分正在工作。
请在下面找到python 3实现。我没有尝试过,所以请告诉我它是否无法正常工作。
import os
root_folder = r'D:/MacroInvertebrates_Stacked'
content = {}
for root, dirs, files in os.walk(root_folder):
for subdir in dirs:
content[os.path.join(root, subdir)] = []
content[root] = files
list_of_dicts = []
for folder, filenames in list(content.items()):
dict_name = string(os.path.relpath(folder, root_folder)).replace('\\', '_')
dict_name = {}
for filename in filenames:
if filename.endswith('.txt'):
with open(filename) as f:
for line in f:
line = line.rstrip()
if line.startswith("Description"):
taxa = line.split()[2:3]
for taxon in taxa:
dict_name[taxon]=dict_name.get(taxon,0) +1
list_of_dicts.append(dict_name)
print(list_of_dicts)
list_of_dicts包含与每个子文件夹相对应的字典名称,其中包含计数。