python中是否有任何等价方法可替换C中EOF的
假设,文件包含3行。我想迭代文件直到文件结束。
>>> fp.seek(0)
>>> with open(file,'rb') as openfileobject:
for chunk in iter(partial(openfileobject.read,1024),''):
openfileobject.read()
以上代码处于无限循环中。我知道下面的代码会帮我解决这个问题。
^{pr2}$
但是,我愿意手动迭代文件指针。这就是为什么我在python中搜索eof等价物的原因。
Tags:
你的代码有几处错误。最直接的错误是您的sentinel值需要是
bytes
对象,而不是str
,因为您是以二进制模式打开文件的。这就是它永远循环的原因。所以使用b''
:您需要使用
b''
,因为两个参数iter
的工作方式是,该值需要是您传入的函数返回的值。 当file对象用完时,fileobject.read
函数将返回b''
,Python处理EOF
本身。因此,出于所有意图和目的,您应该只关心b''
。如果fileobject
在测试模式下是open
,那么fileobject.read
将返回一个''
字符串对象,而不是bytes
对象。在但实际上,您只会以这种方式进行一次迭代,因为在第一次迭代中,您调用
openfileobject.read
,它的读数直到EOF为止。chunk
实际上是您需要的<;=1024字节的块!在所以你真正想要的是:
^{2}$根据评论进行编辑:
所以,我想你想要的
do_something
是这样的:但请记住,当您以“chunks”形式读取文件时,您的行将被分割(除非这些行以chunksize开头对齐…)
相关问题 更多 >
编程相关推荐