2012-06-11 67 views
2

我有5個文本文件需要存儲在數組中。我試過這樣。如何使用python存儲數組中的文件內容?

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:列表分配索引超出範圍」

回答

3

您需要使用append

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

在你的代碼試圖分配到指標值是尚不存在。

'append()'將一個項目添加到列表的末尾。最初您的列表f爲空,但每次追加時都會將該項添加到列表的末尾,並且您可以通過訪問其索引編號來引用它(或更改它)。

+0

明白了!謝謝! –

+0

@Aiurea Adica tot YO - 歡迎來到SO!只要'f.append(open('path','r'))'就足夠了 – fraxel

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結構免去您的文件在結束時關閉。

相關問題