我生成了许多文本文件,这些文件都包含浮动列表。每个列表的长度因文件而异。我想为每个文件生成一个直方图。因此,我想迭代目录中的所有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')):
但在这里我只能生成一个直方图。任何帮助都会非常感激,我一直在努力迭代文件。
答案 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()