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 回答