2016-05-31 11 views
-4

Мне нужен скрипт подсчета скриптов python во всех текстовых файлах в одном каталоге и выработка общего отчета о количестве файлов с n количество строк.Python-скрипт, подсчитывающий строки в нескольких текстовых файлах в одном каталоге и создающий простой отчет

Отчет должен выглядеть следующим образом:

Files with 1 line: 636 
Files with 2 lines: 346 
Files with 3 lines: 234 
Files with 4 lines: 723 
Files with 5 lines: 254 
Files with 6 lines: 223 
Files with 7 lines: 1464 
etc. 

Я нашел этот скрипт для подсчета строк во всех файлах в директории Python script to count num lines in all files in directory:

#!/usr/bin/env python 

import csv 
import copy 
import os 
import sys 
import glob 

#get current working dir, set count, and select file delimiter 
os.chdir('/mydirectory') 

#parses through files and saves to a dict 

names={} 
for fn in glob.glob('*.txt'): 
    with open(fn) as f: 
     names[fn]=sum(1 for line in f if line.strip() and not line.startswith('#'))  

print names 

#save the dictionary with key/val pairs to a csv 
with open('seriescount.csv', 'wb') as f: 
    w = csv.DictWriter(f, names.keys()) 
    sum(names.values()) 

Как мы можем идти о создании простой сообщите, как выше? Спасибо.

+0

У вас есть пример. Так что начните работать и не спрашивайте. – qvpham

+1

вместо поиска сценариев низкого качества, которые не решают вашу проблему, попробуйте изучить питон и написать собственный скрипт. – Daniel

+1

Хотя я согласен с тем, что этот вопрос является пограничным, базовая линия Stack Overflow не является «созданием энциклопедии статей, посвященных поисковым и общественным интересам», но «Задавайте вопросы, получайте ответы, не отвлекайтесь». Этот вопрос уважает эту философию и демонстрирует больше исследовательских усилий, чем большинство вопросов с одним лайнером «пожалуйста, разрешите мою проблему для меня». – Jivan

ответ

0

Ваш names ДИКТ выглядит следующим образом:

{ 
    'file1.txt': 30, 
    'file2.txt': 26, 
    'file3.txt': 19, 
    'file4.txt': 19 
} 

Так вы просто должны начать с этого и следовать с:

from collections import defaultdict 

lines = defaultdict(int) 
for val in names.values(): 
    lines[val] += 1 

for k, v in lines.items(): 
    print("Files with {} lines: {}".format(k, v)) 

Это будет печатать что-то вроде:

Files with 19 lines: 2 
Files with 26 lines: 1 
Files with 30 lines: 1 
+0

Downvoters gotta downvote ... – Jivan

+0

Спасибо миллиону @ Jivan, он делает трюк! – jigitjigit2

 Смежные вопросы

  • Нет связанных вопросов^_^