在一个文件夹中的多个文本文件中计算“某事”

时间:2011-11-02 00:27:38

标签: python file text count

我正在尝试计算文件中出现的“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 个答案:

答案 0 :(得分:1)

应该是:

data = open(infile, 'r').read()
print data.count('Tmp')

答案 1 :(得分:1)

我会使用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)

答案 2 :(得分:0)

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')