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

しかし、ここではヒストグラムを 1 つしか生成できません。私は常にファイルの反復処理に苦労してきました。

4

2 に答える 2

0

os.listdir()( http://docs.python.org/2/library/os.html#os.listdir );を使用して、特定のディレクトリ内のすべてのファイルを取得できます。その後、すべてのファイルを反復処理してデータを取得できます。

投稿したコードでは、patches反復ごとに を上書きしているようです。これが、ヒストグラムが 1 つしか得られない理由かもしれません。

于 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 に答える