gpt4 book ai didi

python - 如何读取简单的二进制文件

转载 作者:行者123 更新时间:2023-12-01 05:21:02 24 4
gpt4 key购买 nike

我有一个二进制文件,由固定且相等长度的连续二进制子序列组成。每个子序列都可以被解包成相同数量的值。我知道每个子序列的长度和值的二进制格式。

How can I work through the binary file, chopping out the subsequences, unpacking their content and write them out as csv as I go.

我知道如何写成 csv。我的问题是读取文件和解包部分。这是我的非工作代码。

import csv
import sys
import struct
writer = csv.writer(sys.stdout, delimiter=',', quoting=csv.QUOTE_NONE,escapechar='\\')
? rows = sys.stdin. ?
? header = id, time ....
? write the header with csv
i = 0
for row in rows:
unpacked_row = unpack('QqqqddiBIBcsbshlshhlQB',row)
writer.writerow(unpacked_row)
i += 1
<小时/>

可能的解决方案使用 Reading binary file in Python and looping over each byte以及 ignacio 的回答。

首先计算 chunksize = struct.calcsize()

def bytes_from_file(filename, chunksize=8192):
with open(filename, "rb") as f:
while True:
chunk = f.read(chunksize)
if chunk:
yield chunk
else:
break

# example:
for chunk in bytes_from_file('filename'):
# row = unpack(chunk)
# write out row as csv

最佳答案

您需要计算结构的大小(提示:struct.calcsize())并一次从文件中读取该大小的多个倍数。您无法像使用文本文件那样直接迭代输入,因为没有分隔符。

关于python - 如何读取简单的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22381225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com