2

我有 5 个文本文件需要存储在数组中。我试过这样。

f=[]
f[0]=open('E:/cyg/home/Aiurea/workspace/nCompare5w5.txt','r')
f[1]=open('E:/cyg/home/Aiurea/workspace/nCompare5w10.txt','r')
f[2]=open('E:/cyg/home/Aiurea/workspace/nCompare5w20.txt','r')
f[3]=open('E:/cyg/home/Aiurea/workspace/nCompare5w50.txt','r')
f[4]=open('E:/cyg/home/Aiurea/workspace/nCompare5w80.txt','r')

for i in range(5):
    f[i].close()

错误消息是“IndexError:列表分配索引超出范围”

4

2 回答 2

3

您需要使用append

f.append(open('E:/cyg/home/Aiurea/workspace/nCompare5w5.txt','r'))

在您的代码中,您尝试分配给尚不存在的索引值。

'append()' 将一个项目添加到列表的末尾。最初你的列表f是空的,但每次你追加它都会将该项目添加到列表的末尾,你可以通过访问它的索引号来引用它(或更改它)。

于 2012-06-11T12:12:08.597 回答
2

您不必重复整个路径/文件名信息:

import os

path = 'E:/cyg/home/Aiurea/workspace'
fnames = [ 'nCompare5w{0}.txt'.format(i) for i in (5, 10, 20, 50, 80) ]

f = []
for fname in fnames:
    with open(os.path.join(path, fname), 'r') as fr:
        f.append(fr.readlines())

with构造还可以使您在最后关闭文件。

于 2012-06-11T12:16:40.357 回答