我有一个文本文件,我们称之为goodlines.txt
,我想加载它并创建一个包含文本文件中每一行的列表。
我尝试使用split()
这样的程序:
>>> f = open('goodlines.txt')
>>> mylist = f.splitlines()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: '_io.TextIOWrapper' object has no attribute 'splitlines'
>>> mylist = f.split()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: '_io.TextIOWrapper' object has no attribute 'split'
为什么我会收到这些错误?这不是我使用split()
的方式吗? (我正在使用python 3.3.2
)
答案 0 :(得分:25)
您在打开的文件对象上使用str
方法。
您只需在文件对象上调用list()
即可将该文件作为行列表读取:
with open('goodlines.txt') as f:
mylist = list(f)
此 包含换行符。你可以在列表理解中删除那些:
with open('goodlines.txt') as f:
mylist = [line.rstrip('\n') for line in f]
答案 1 :(得分:6)
试试这个:
>>> f = open('goodlines.txt')
>>> mylist = f.readlines()
open()
函数返回一个文件对象。对于文件对象,没有像splitlines()
或split()
这样的方法。您可以使用dir(f)
查看文件对象的所有方法。
答案 2 :(得分:3)
您没有阅读文件内容:
my_file_contents = f.read()
有关更多信息,请参阅the docs
您可以在不调用read()
或readlines()
的情况下循环遍历文件对象:
f = open('goodlines.txt')
for line in f:
print(line)
如果你想要一个列表(没有\n
你提出的话)
my_list = [line.rstrip('\n') for line in f]