连续两次使用“readlines()”

时间:2012-04-18 00:14:32

标签: python io readlines

我正在尝试做这样的事情:

Lines = file.readlines()
# do something
Lines = file.readlines()  

但第二次Lines为空。这是正常的吗?

3 个答案:

答案 0 :(得分:7)

是的,因为.readlines()将文件指针前进到文件的末尾。

为什么不直接在变量中存储这些行的副本?

file_lines = file.readlines()
Lines = list(file_lines)
# do something that modifies Lines
Lines = list(file_lines)

它比击中磁盘两倍效率要高得多。 (请注意,list()调用是创建列表副本所必需的,因此对Lines的修改不会影响file_lines。)

答案 1 :(得分:6)

您需要使用

重置文件指针
file.seek(0)

之前使用

file.readlines()

试。

答案 2 :(得分:0)

为了不必每次都使用搜索方法反复重置,请使用readlines方法,但必须将其存储在变量中,如下例所示:

%%writefile test.txt
this is a test file!
#open it
op_file = open('test.txt')
#read the file
re_file = op_file.readlines()
re_file
#output
['this is a test file!']
# the output still the same
re_file
['this is a test file!']