read()和readline()可以一起使用吗?

时间:2016-10-11 13:12:30

标签: python

是否可以在python中的一个文本文件中同时使用read()和readline()?

当我这样做时,它只会执行第一次阅读功能。

file = open(name, "r")
inside = file.readline()
inside2 = file.read()

print(name)
print(inside)
print(inside2)

结果仅显示inside变量,而不是inside2

2 个答案:

答案 0 :(得分:4)

阅读文件就像读书一样。当你说.read()时,它会通读这本书直到结束。如果你再次说.read(),那么你忘了一步。你不能再读它,除非你翻页直到你开始。如果你说.readline(),我们就可以称之为页面。它会告诉您页面的内容然后翻页。现在,说.read()从那里开始并读到最后。第一页不包含在内。如果您想从头开始,则需要返回页面。这样做的方法是使用.seek()方法。给出一个参数:一个寻求的角色位置:

with open(name, 'r') as file:
    inside = file.readline()
    file.seek(0)
    inside2 = file.read()

还有另一种从文件中读取信息的方法。当您使用for循环时,它在引擎盖下使用:

with open(name) as file:
    for line in file:
        ...

这种方式是next(file),它为您提供下一行。不过,这种方式有点特别。如果file.readline()file.read()位于next(file)之后,则会出现混合迭代和读取方法会丢失数据的错误。 (致Sven Marnach指出这一点。)

答案 1 :(得分:1)

是的,你可以。

file.readline()从文件中读取一行(本例中为第一行),然后file.read() seek 位置读取文件的其余部分,在这种情况下,file.readline()停止了。

您收到一个空字符串f.read()可能是因为您在阅读第一行file.readline()后立即到达 EOF - 文件结尾,暗示您的文件只包含一行

然而,您可以通过f.seek(0)将搜索位置移动到开头来返回文件的开头。