列出索引超出范围的读取文件

时间:2019-07-24 13:15:18

标签: python python-2.x

我是python的初学者,需要一些帮助。尝试处理一些dat文件时遇到问题。

我创建了159个数据文件(refitted_to_digit0_0.dat, refitted_to_digit0_1.dat, ...refitted_to_digit0_158.dat),其中包含两列2999行的时间序列数据(时间步长,值)。在我的python程序中,我使用filelist_refit_0=glob.glob('refitted_to_digit0_*') plist_refit_0=[]

创建了这些文件的列表。

我现在尝试将每个159个文件的第二列加载到plist_refit_0中,以便列表中的每个位置包含2999个值(第二列)的数组,我将使用它们进行进一步的操作。我为此创建了一个for循环,并使用len(filelist_refit_0)作为循环的范围。长度为159(文件数:0-158)。

但是,当我运行此命令时,我收到一条错误消息:list index out of range。 我尝试过使用for循环的较低范围,它似乎可以工作到范围66,但不能超过该范围。 filelist_refit_0[66]引用文件refitted_to_digit0_158.datfilelist_refit_0[67]引用refitted_to_digit0_16.datfilelist_refit_0[158]是指refitted_to_digit0_99.dat。我认为plist_refit_0的文件不是基于数字的升序排序,而是根据数字的升序排序:首先是refitted_to_digit0_0.dat,然后是refitted_to_digit0_1.dat,然后是{{1 }},然后是refitted_to_digit0_10.dat,然后是refitted_to_digit0_101.dat,导致refitted_to_digit0_100.dat在列表中的位置66。但是,我仍然不明白为什么refitted_to_digit0_158.dat的长度为159并且实际上有159个文件时,无论顺序如何,编译器都将索引解释为超出66的范围。如果有人可以解释这一点,并且对如何解决此问题提出建议,我将非常感激!谢谢你的帮助。

我已经尝试了以下方法来理解排序:

filelist_refit_0

我已经“手动”加载了文件,并且似乎适用于大多数索引。

print len(filelist_refit_0) => 159
print filelist_refit_0[66] => refitted_to_digit0_158.dat
print filelist_refit_0[67] => refitted_to_digit0_16.dat
print filelist_refit_0[158] => refitted_to_digit0_99.dat
print filelist_refit_0[0] => refitted_to_digit0_0.dat

但不适用于index66 !:

t, p = loadtxt(filelist_refit_0[65], usecols=(0, 1), unpack=True)
plist_refit_0.append(p)
t, p = loadtxt(filelist_refit_0[67], usecols=(0, 1), unpack=True)
plist_refit_0.append(p)
print plist_refit_0[0]
print plist_refit_0[1]

然后我得到了错误:t, p = loadtxt(filelist_refit_0[66], usecols=(0, 1), unpack=True) plist_refit_0.append(p)

从上面可以看出,它引用了list index out of range,这是最后一个文件。我查看了该文件,它看起来与所有其他文件完全相同,它们的列数和原始元素数相同(2999)。为什么此项不同?

Python 2:

refitted_to_digit0_158.dat
filelist_refit_0 = glob.glob('refitted_to_digit0_*')
plist_refit_0 = []

for i in range(len(filelist_refit_0)):
    t, p = loadtxt(filelist_refit_0[i], usecols=(0, 1), unpack=True)
    plist_refit_0.append(p)

0 个答案:

没有答案
相关问题