Tôi cần phải lặp lại cho đến khi tôi nhấn vào cuối của một đối tượng giống như tập tin, nhưng tôi không tìm thấy một "cách rõ ràng để làm điều đó", mà làm cho tôi nghi ngờ tôi nhìn thấy một cái gì đó, tốt, rõ ràng. :-)Làm thế nào để lặp lại cho đến khi EOF bằng Python?
Tôi có một dòng (trong trường hợp này, đó là một đối tượng StringIO, nhưng tôi tò mò về những trường hợp chung cũng) mà các cửa hàng một số không rõ các bản ghi trong "< length> < dữ liệu>" định dạng , ví dụ:
data = StringIO("\x07\x00\x00\x00foobar\x00\x04\x00\x00\x00baz\x00")
Bây giờ, cách duy nhất rõ ràng tôi có thể tưởng tượng để đọc đang sử dụng (những gì tôi nghĩ là) một vòng lặp khởi tạo, mà dường như một chút un-Pythonic:
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)
Trong ngôn ngữ giống như C, tôi chỉ dán read(4)
vào 012 Điều khoản thử nghiệm của, nhưng tất nhiên điều đó sẽ không hoạt động đối với Python. Bất kỳ suy nghĩ về một cách tốt hơn để thực hiện điều này?
Vì vậy, nhiều câu trả lời! Có lẽ tôi không nên đăng ngay trước khi đi ăn trưa. :-) –