0

テキストファイルから配列Zに値を読み取る必要があります。これは、単一のファイルChiTableSingleを使用するだけで正常に機能しますが、複数のファイルを使用しようとすると失敗します。行を正しく読み取っているようで、Zを生成しますが、z [0]を[]と同じように指定すると、エラーが発生し、配列要素をシーケンスで設定します。

これは私の現在のコードです:

rootdir='C:\users\documents\ChiGrid'
fileNameTemplate = r'C:\users\documents\ContourPlots\Plot{0:02d}.png'

for subdir,dirs,files in os.walk(rootdir):
    for count, file in enumerate(files):

        fh=open(os.path.join(subdir,file),'r')
        #fh = open( "ChiTableSingle.txt" );

        print 'file is '+ str(file)

        Z = []
        for line in fh.readlines():
            y = [value for value in line.split()]
            Z.append( y )

        print Z[0][0]
        fh.close()

        plt.figure() # Create a new figure window

        Temp=open('TempValues.txt','r')
        lineTemp=Temp.readlines()
        for i in range(0, len(lineTemp)):
            lineTemp[i]=[float(lineTemp[i])]

        Grav=open('GravValues2.txt','r')
        lineGrav=Grav.readlines()
        for i in range(0, len(lineGrav)):
            lineGrav[i]=[float(lineGrav[i])]

        X,Y = np.meshgrid(lineTemp, lineGrav) # Create 2-D grid xlist,ylist values

        plt.contour(X, Y, Z,[1,2,3], colors = 'k', linestyles = 'solid')
        plt.savefig(fileNameTemplate.format(count), format='png')
        plt.clf()
4

1 に答える 1

0

最初に気付いたのは、リスト内包y = [value for ...]表記は (関数から) 文字列のリストのみを返すsplit()ため、プロットを試みる前のある時点でそれらを数値形式に変換する必要があるということです。

さらに、読み込んでいるファイルが単に空白で区切られた数字の表である場合はnumpy.loadtxt(fh)、分割と型変換を処理して 2-d を返すため、使用を検討する必要がありますnumpy.array。行が通常の python コメント文字 (例: ) で始まる場合に無視されるコメント テキストを追加することもできます# this line is a comment and will be ignored

別の考えとして、Python メソッドと同じ変数名 (fileこの場合は単語など) の使用には注意が必要です。別のものとして再定義すると、以前の定義はなくなります。

于 2013-02-05T18:16:03.980 に答える