我需要循环直到我到达一个类似文件的对象的末尾,但我没有找到“显而易见的方法”,这让我怀疑我忽略了一些东西,嗯,很明显。 :-)
我有一个流(在本例中,它是一个 StringIO 对象,但我也对一般情况很好奇)以“
data = StringIO("\x07\x00\x00\x00foobar\x00\x04\x00\x00\x00baz\x00")
现在,我能想到的唯一清晰的阅读方式是使用(我认为是)初始化循环,这似乎有点不符合 Python 风格:
len_name = data.read(4)
while len_name != "":
len_name = struct.unpack("<I", len_name)[0]
names.append(data.read(len_name))
len_name = data.read(4)
在类 C 语言中,我只是将 read(4)
粘贴在 while
的测试子句中,但这当然行不通对于 Python。关于实现此目的的更好方法有什么想法吗?
最佳答案
您可以通过 iter() 组合迭代与哨兵:
for block in iter(lambda: file_obj.read(4), ""):
use(block)
关于python - 如何在 Python 中循环直到 EOF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1752107/