0

我已经生成了许多包含浮点数列表的文本文件。每个列表的长度因每个文件而异。我想为每个文件生成一个直方图。因此,我想遍历目录中的所有 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')):

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

4

2 回答 2

0

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

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

于 2013-07-09T14:08:51.310 回答
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()
于 2013-07-09T14:16:13.520 回答