2015-04-22 82 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列表中的文件列表:[['有一个家'],['有一个人住在那里'],['他很高。'],['他很好'。]] –