不爱小甲鱼 发表于 2023-1-4 16:41:32

Python二进制文件数据读取中遇到的问题,求指教

本帖最后由 不爱小甲鱼 于 2023-1-4 16:45 编辑

with open(filepath,'rb') as f1:
    data_f = f1.read()
    data_f_re_2 = f1.read(2)
    # print(data_f_re_2)
data_f_len = len(data_f)

data_f_row = math.floor(data_f_len/360)
data_f_re = np.broadcast_to(data_f, (data_f_row, 360))
data_f_re_1 = data_f_re
print(type(data_f_re))
print(len(data_f_re_1))

for i in range(360):

    data_f_re_2_s = struct.unpack('dd', data_f_re_2)
    print(data_f_re_2_s)



Traceback (most recent call last):
File "D:/python_demo/mz/vib.py", line 33, in <module>
    data_f_re_2_s = struct.unpack('dd', data_f_re_2)
struct.error: unpack requires a buffer of 16 bytes
<class 'numpy.ndarray'>
360

不爱小甲鱼 发表于 2023-1-4 16:43:03

现在是想先把二进制文件读出来,转换成十进制。后面再考虑另存的事。
转换过程中遇到的问题
求指教

isdkz 发表于 2023-1-4 16:51:37

不爱小甲鱼 发表于 2023-1-4 16:43
现在是想先把二进制文件读出来,转换成十进制。后面再考虑另存的事。
转换过程中遇到的问题
求指教

看下表,d是占8个字节的,2个d需要16个字节的数据,你的 data_f_re_2 才是读了两个字节出来,

更何况,你在前面已经读出了所有数据,文件指针已经到了文件末尾,你不调整指针的话一个字节都读不出来,

不信你 print 一下 data_f_re_2,它是空的

不爱小甲鱼 发表于 2023-1-4 17:13:32

isdkz 发表于 2023-1-4 16:51
看下表,d是占8个字节的,2个d需要16个字节的数据,你的 data_f_re_2 才是读了两个字节出来,

更何况 ...

谢谢,我知道问题出在哪了。我再试试。跟我之前想的不一样。
页: [1]
查看完整版本: Python二进制文件数据读取中遇到的问题,求指教