Я хочу создать отдельные словари для всех подпапок в основной папке.
У меня есть папка с подпапками, в которой находятся файлы .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 папок, и количество раз, которое они встречаются, следующим образом :
- Locatie_5_Stacked_Batch_1 = {"Anisus_vortex": "4", "Bithynia_tentaculata": "2", ...}
- Locatie_5_Stacked_Batch_2_Top_Bottom = {"Anisus_vortex": "7", "Bithynia_tentaculata": "3", ...}
- Stacked_Half_loc_4_Hab6_Half_loc_2_4 = {"Anisus_vortex": "0", "Bithynia_tentaculata": "25", ...}
В приведенном ниже коде работает извлечение всех описаний из основной папки и ее подпапок, объединенных в один словарь. Я подумал, что было бы разумно, по крайней мере, сделать цикл из каталогов в строке 7 следующим шагом.
Мне также имеет смысл создать словари в цикле и оттуда получить путь к папке в виде строки и назначить это как название словаря.
Итак, я бы хотел следующее:
- Словарь для каждой подпапки
- В каждом словаре "Описание" плюс счетчик из этой подпапки
- В идеале имя словаря должно быть или включать имя подпапки.
Как мне это сделать?
Дополнительное примечание: мне просто нужно получить описания и подсчеты и узнать, из каких папок они поступают, чтобы поместить их в другой файл (.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)