Python没有读取文件行

时间:2014-12-03 04:51:31

标签: python file

file=open('in.txt','r')
print((file.readlines()).pop(20)[:-1])
for line in file:
    print(line[:-1])

我有这个程序,当我运行它时,它会显示我的文件的第21行并且它就是它。我不知道它的技术术语,但每当我使用' .read()'或者' readline()'或者' readlines()'然后尝试直接从文件中读取,它永远不会工作,为什么呢?发生了什么事?我没有收到错误代码,它只是没有显示任何内容,因为' for'循环。

2 个答案:

答案 0 :(得分:2)

你在这里打开文件:

file=open('in.txt','r') # note r is default, you don't need it explicitly.

当您致电file.readlines时,您将耗尽文件处理程序:

print((file.readlines()).pop(20)[:-1])

然后当你再次尝试迭代文件时,它就在文件的末尾,什么都不做。

你也忘记了最后关闭你的文件。 我建议您使用上下文管理器来自动关闭文件,并且只浏览一次文件:

with open('in.txt', 'rU') as file:
    file_lines = file.readlines()

然后参考列表中的文件行。

请注意,我使用rU标志,该标志使用通用换行符模式。这将涵盖跨平台,因为OS X,Windows和Linux都有不同的换行符。

而不是这样做:

for line in file:
    line[:-1]

您可以通过使用line.rstrip()处理行来删除换行符,这将删除右侧的空格。

答案 1 :(得分:1)

你需要"重置"文件迭代器:

file.seek(0)
for line in file:
    print(line[:-1])