此结构正在循环读取所有文件:
def chunked_all(f):
def read_item():
return f.read(108)
for data in iter(read_item, ''):
info = struct.unpack_from("=HHBBBBBBHQHHIIIIHH32s32s", data)
yield (info[9], info[11], info[15])
for i in chuncked_all(file):
process_data(i)
我喜欢让它更快。在108
上读取更多yield
字节的数据维护结构。
修改
struct.unpack_from
可以使用tuple
(info[9], info[11], info[15])
的列表
def read_item():
return f.read() # all data file
list_tuples = struct.unpack_from("=HHBBBBBBHQHHIIIIHH32s32s", read_item())
list_tuples
>>> [(1,2,3), (1,2,3), (1,2,3) ... ]
答案 0 :(得分:0)
def read_items(f):
s = f.read(108*1000)
for o in range(0, len(s), 108):
yield buffer(s, o, 108)
for data in read_items(f):
...