私はファイルのようなオブジェクトの終わりに達するまでループする必要がありますが、私は "明白なやり方"を見つけていません。 :-)PythonでEOFまでループする方法は?
「< length> < data>」という形式の未知数のレコードを格納するストリームがあります(この場合、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のような言語では、私は012にread(4)
を貼り付けていますのテスト節ですが、もちろんPythonではうまくいきません。これを達成するためのよりよい方法に関する考えはありますか?
非常に多くの回答を!おそらく、私は昼食に行く前に投稿してはいけません。 :-) –