如何在文件夹python中的每个文件上执行任务

时间:2013-07-09 13:58:54

标签: python loops histogram

我生成了许多文本文件,这些文件都包含浮动列表。每个列表的长度因文件而异。我想为每个文件生成一个直方图。因此,我想迭代目录中的所有txt文件并为每个文件打印直方图。到目前为止,我已尝试过这段代码,但无济于事:

for file in list(glob.glob('*.txt')):
    with open(file, 'r') as f:
        numbers = f.read().strip()
        n, bins, patches = hist(numbers, 100, normed=1, histtype='bar')
        setp(patches, 'facecolor', 'g', 'alpha', 0.75)
        title('m_score for each complex spike')
        ylabel('number of complex spikes')
        xlabel('m_score')
        show()

我也尝试过使用:

for line in fileinput.input(glob('*.txt')):

但在这里我只能生成一个直方图。任何帮助都会非常感激,我一直在努力迭代文件。

2 个答案:

答案 0 :(得分:0)

您可以使用os.listdir()http://docs.python.org/2/library/os.html#os.listdir)获取给定目录中的所有文件;然后,您可以遍历所有文件并获取数据。

在您发布的代码中,您似乎在每次迭代中覆盖patches,这可能就是您只获得一个直方图的原因。

答案 1 :(得分:0)

您可以尝试这样的事情:

import os

directory = os.path.join("/","path") # directory that contains your files
for root,dirs,files in os.walk(directory):
    for file in files:
       if file.endswith(".txt"):
           with open(file, 'r') as f:
               numbers = f.read().strip()
               n, bins, patches = hist(numbers, 100, normed=1, histtype='bar')
               setp(patches, 'facecolor', 'g', 'alpha', 0.75)
               title('m_score for each complex spike')
               ylabel('number of complex spikes')
               xlabel('m_score')
               show()