是否可以在python中的一个文本文件中同时使用read()和readline()?
当我这样做时,它只会执行第一次阅读功能。
file = open(name, "r")
inside = file.readline()
inside2 = file.read()
print(name)
print(inside)
print(inside2)
结果仅显示inside
变量,而不是inside2
。
答案 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)
将搜索位置移动到开头来返回文件的开头。