Подсчет «чего-то» в нескольких текстовых файлах в одной папке - PullRequest
1 голос
/ 02 ноября 2011

Я пытаюсь подсчитать, сколько раз встречается «Tmp» в файле и к какому файлу относится счет. Я создал скрипт, который работает, но мне нужно настроить входной файл и выходной каталог для каждого файла. Чтобы улучшить его, я бы хотел, чтобы скрипт просматривал каждый файл в папке после его настройки один раз.

Я экспериментировал с:

import tkFileDialog
import glob
import os
directory = tkFileDialog.askdirectory()
for infile in glob.glob(os.path.join(directory, "*.*")):
    open(infile, "r").read()
    infile.count("Tmp")

В настоящее время я подсчитываю, сколько раз "Tmp" встречается в имени файла, а не в самом файле, когда я печатаю:

print infile

выводит содержимое текстовых файлов, но не каталог? Я просто не понимаю, куда идти и что делать.

Ответы [ 3 ]

1 голос
/ 02 ноября 2011

Я бы использовал os.walk, а не glob:

import tkFileDialog
import os
import os.path
import re

directory = tkFileDialog.askdirectory()

for dirpath, dirnames, filenames in os.walk(directory):
    for filename in filenames:
        path = os.path.join(dirpath, filename)

        with open(path) as file:
            contents = file.read()

            print path[:30], contents.count('Tmp'), re.findall('Tmp\d{5}', contents)
1 голос
/ 02 ноября 2011

Это должно быть:

data = open(infile, 'r').read()
print data.count('Tmp')
0 голосов
/ 02 ноября 2011
import os
import glob
import tkFileDialog


directory = tkFileDialog.askdirectory()        

for infile in glob.glob(os.path.join(directory, '*')):
    if os.path.isfile(infile):
        f = open(infile)
        print os.path.split(infile)[-1], f.read().count('Tmp')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...