2008-11-29 104 views
26

我试图打开一个文件,并从文件中读取每行创建一个列表。创建一个列表,其中包含文件的每一行

i=0 
    List=[""] 
    for Line in inFile: 
     List[i]=Line.split(",") 
     i+=1 
    print List 

但此示例代码给了我一个错误,因为i+=1的话说,index is out of range。 这里有什么问题?如何编写代码以便使用InFile中的每个新行增加我的列表?

回答

58

这是比这更容易了很多:

List = open("filename.txt").readlines() 

这将返回文件中的每一行的列表。

+0

WoooW只是完美!有效。顺便说一句,想象一下,这不是一个文件...但我想创建一个动态列表...我怎样才能追加一个元素呢?就像是一个arrayList? ty so so much – UcanDoIt 2008-11-29 22:06:41

+0

append方法可以做到这一点。例如:xs.append(line) – 2008-11-29 23:06:29

+2

关闭文件怎么办? – matlabit 2015-11-25 13:44:28

-5

我不确定Python是什么,但大多数语言都有数组的push/append函数。

8
my_list = [line.split(',') for line in open("filename.txt")] 
1

文件是几乎行的列表。你可以在中循环使用循环。

myFile= open("SomeFile.txt", "r") 
for x in myFile: 
    print x 
myFile.close() 

或者,如果您想要一个实际的行列表,只需从该文件创建一个列表。

myFile= open("SomeFile.txt", "r") 
myLines = list(myFile) 
myFile.close() 
print len(myLines), myLines 

你不能做someList[i]在列表的末尾把一个项目。你必须做someList.append(i)

另外,从不用大写字母开始一个简单的变量名称。 List混淆了认识Python的人。

另外,从来没有使用内置名称作为变量。 list是一种现有的数据类型,并将其作为变量混淆了认识Python的人。

1

f.readlines()返回,如果你想eachline被拆分包含各行如清单

项目列表(“”),可以使用列表理解

[ list.split(",") for line in file ] 
7

请阅读PEP8。你在Python公约中摇摆不定。

如果你想用逗号分割每行列出的名单,我应该这样做:

l = [] 
for line in in_file: 
    l.append(line.split(',')) 

你会得到每个记录一个换行符。如果你不希望出现这种情况:

l = [] 
for line in in_file: 
    l.append(line.rstrip().split(',')) 
22

我就是这么做的

lines_list = open('file.txt').read().splitlines() 

每个系标配的行字符其结束(\ n \ r);这样字符被删除。

0

假设你也想在开始和每行的末尾剥离空格,您可以将字符串条函数映射到由readlines方法返回的列表:

map(str.strip, open('filename').readlines()) 
相关问题