2015-04-22 83 views
0

我試圖從目錄中打開一堆文件,並試圖把結果列表即列表,如何在Python中創建列表列表以存儲文本列表?

也就是說, 我有一個目錄的文件名列表,我想閱讀其中的每一個。 閱讀其中的每一個後,我想把每個文件的結果放在一個列表中。 這些列表將再次插入以創建列表列表。

要做到這一點,我想如下寫它:

list_of_files = glob.glob('C:\Python27\*.*') 
    print list_of_files 
    list1=[] 
    list2=[] 
    list_N=[list1,list2] 
    for i,j in zip(list_of_files,list_N): 
     print i,j 
     x1=open(i,"r").read() 
     x2=j.append(x1) 
    all_sent=list_N 
    print all_sent 

難道我做錯了什麼?如果有人願意建議? 有沒有更聰明的方法來做到這一點?我在Windows 7專業版上使用Python2.7。 你有許多Python列表的問題我一般有 審查他們。我發佈,因爲我不匹配。道歉 交叉張貼。如果你可能會指示我以前的帖子,我 肯定會刪除我的帖子。

回答

0

嘗試使用以下列表理解:

list_of_files = glob.glob('C:\Python27\*.*') 
data = [open(file, 'r').read() for file in list_of_files] 
0

假設你的意思是你希望每個內部陣列來彌補你正在閱讀的文件的每一行的,你可以在短短一個做到這一點得到的文件列表後線(從這裏其他的答案修改):

data = [open(f, 'r').readlines().split('\n') for f in list_of_files] 

進行分解:

open(f, 'r').readlines() 

這是打開一個文件並讀取整個文件中的所有字符作爲臨時存儲的字符串。

.split('\n') 

這是告訴Python來轉動串到一個數組,並使用行尾字符知道其中數組的一個元素結束。

這接通

這是一個文件。

它包含有用的信息。

就是這樣。

["This is a document", "It contains useful info.", "That is all."] 

最後,有

for file in list_of_files 

數組括號內表示你正在創建與循環數組,因此每次迭代返回一個新元素添加到數組中。

+0

謝謝。但我正在尋找[[「這是一個文檔」],[「它包含有用的信息。」],[「這就是全部。」]] –

+0

所以你的意思是你希望每個文檔的每一行都是單個元素在自己的數組? – SuperBiasedMan

+0

沒必要每一行文件,可能是一個文件的全部內容,我用小數據運行的代碼運行良好,但是當來到這個房間會看起來更聰明,特別是我創建的列表。結果我的代碼:文件的名稱是:['C:\\ Python27 \\ TestDoc \\ TestDoc1.txt','C:\\ Python27 \\ TestDoc \\ TestDoc2.txt','C:\\ Python27 \\ TestDoc \\ TestDoc3.txt','C:\\ Python27 \\ TestDoc \\ TestDoc4.txt'] C:\ Python27 \ TestDoc \ TestDoc1.txt [] C:\ Python27 \ TestDoc \ TestDoc2.txt [] The Contents列表中的文件列表:[['有一個家'],['有一個人住在那裏'],['他很高。'],['他很好'。]] –