Я пытаюсь подсчитать количество строк в двух отдельных каталогах, которые отформатированы по-разному и сравнивают результаты. Необходимые текстовые файлы находятся в пределах одного каталога в первом каталоге, а во втором есть подкаталоги, которые мне нужны для повторения, сохранить имя, а затем вытащить и подсчитать все txt-файлы, начинающиеся с имени.Python: Итеративный подсчет строки подкаталога
На данный момент у меня возникли проблемы с сопоставлением имени подкаталога с файлами txt, которые начинаются с него. Мой отслеживающий выглядит следующим образом:
be29X1(149)% ./SeriesCount.py
Traceback (most recent call last):
File "./SeriesCount.py", line 23, in <module>
for fn in files('subdir_name*.txt'):
TypeError: 'list' object is not callable
мне не нужно постоянно сохранять имя подкаталога, так как мне все равно о хранит имена файлов TXT и их подсчета в Словаре. Например, если имя каталога «regprices», я хочу вытащить количество строк для всех текстовых файлов в каталоге, которые начинаются с «regprices». Код ниже:
#!/usr/bin/env python
import csv
import copy
import os
import sys
import glob
import dircmp
#set dicts
dict1 = {}
dict2 = {}
final_dict = {}
#parses through directory 1, counts lines, saves to a dict
for fn in glob.glob('/data/*.txt'):
with open(fn) as f:
dict1[fn] = [1 for line in f if line.strip() and not line.startswith('#')]
#parses through subdirectories in directory 2, counts lines, saves to a dict
for subdir, dirs, files in os.walk('/docs/prod/count/'):
subdir_name = os.getcwd()
for fn in files('subdir_name*.txt'):
dict2[fn] = [1 for line in f if line.strip() and not line.startswith('#')]
#compare dicts, overwrite counts from dict1 with dict2, save to final dict
save final dictionary with key/val pairs to a csv
with open('seriescount.csv', 'w') as f:
w = csv.DictWriter(f, final_dict)
w.writeheader()
w.writerow({k:sum(v) for k, v in final_dict.items()})
Бонусные баллы, если вы можете помочь с синтаксисом сравнением двух словарей, перезапись отсчеты от dir2 к dir1, и сохранение их в final_dict
изменил дифф имени вары – briahnah
Я попытался определения графа как отдельный метод, а также, но ваша строка: Count = сумма (1 для линии в е если line.strip() и линия [0]! = '#') возвращает синтаксическую ошибку (я считаю, это потому, что она не позволяет вам суммировать и подсчитывать в одной строке). Любые идеи о том, как это сделать? – briahnah
Что касается сравнения двух каталогов, я просто планирую прокручивать имена файлов и, если есть дубликаты имен файлов, обновлять счетчик файлов до подсчета каталога 2 вместо каталога 1 count – briahnah