File.readlines() 在 运行 行之后第二次不起作用。 Python

File.readlines() doesn't work after running line a second time. Python

对于一个项目,我一直将数据存储在文本文档中,并且在尝试在脚本中接收回该数据时我注意到了一个问题。更具体地说,我正在使用 readlines() 方法来获取数据。 当我第一次使用它时,它工作得很好;但是,此后的任何时候,它 returns 一个空列表,尽管文档中没有任何更改。

我用这一小段代码重现了这个问题:

testDocRead = open("C:\Users\emowe\OneDrive\Desktop\Python\testDocument.txt", "r")
print(testDocRead.readlines()) #  attempt 1
print(testDocRead.readlines()) #  attempt 2

第一次尝试时,一切正常。它打印:

['Filler\n', 'text\n', 'to\n', 'add\n', 'lines']

第二次尝试简单地打印:

[]

我的问题是:

一个解释是,当你打开文件进行读取时,你使用第一个testDocRead.readlines(),它读取所有行;从而将文件指针指向文件末尾。

任何后续的 readlines() 都不会给出任何结果,因为它在 文件结尾。

您需要将文件指针重置回开头。

testDocRead = open("C:\Users\emowe\OneDrive\Desktop\Python\testDocument.txt", "r")
print(testDocRead.readlines()) #  attempt 1
testDocRead.seek(0)
print(testDocRead.readlines()) #  attempt 2

seek(0) 将文件指针重置回文件开头。

您还可以使用的另一个选项是关闭文件并再次打开它。

因为readlines()函数returns文件的所有行,以列表的形式。

如果您仍想打印两次输出,请写:

with open(path_name , 'r') as reader:
    data = reader.readlines() 

    print(f"{data}\n{data}") 

或者,如果您想逐行打印,请使用 .readline 而不是 .readlines

最后,您还可以使用 .seek 方法重新启动您的 readlines 函数,方法是将其设置为 0。