快速解压缩二进制文件的结构列表

时间:2014-03-18 04:49:59

标签: python python-2.7

此结构正在循环读取所有文件:

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) ... ]

1 个答案:

答案 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):
   ...