Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 解包需要长度为32的字节对象_Python 3.x_Csv - Fatal编程技术网

Python 3.x 解包需要长度为32的字节对象

Python 3.x 解包需要长度为32的字节对象,python-3.x,csv,Python 3.x,Csv,我需要打包数据并导出到csv文件,以及读取该csv文件并解码数据 import csv from struct import * formater = 'fff' with open('samples.csv', 'rb') as csvFile: reader = csv.reader(csvFile) for row in reader: print(unpack(formater,row[0].encode('UTF-8'))) csvFile.close

我需要打包数据并导出到csv文件,以及读取该csv文件并解码数据

import csv
from struct import *

formater = 'fff'
with open('samples.csv', 'rb') as csvFile:
    reader = csv.reader(csvFile)
    for row in reader:
        print(unpack(formater,row[0].encode('UTF-8')))
csvFile.close()
这是我打包数据的代码

from struct import *

raw_data = [[76.94,76.944,76.945],[76.97,76.979,76.980],[77.025,77.025,77.025]]
for data in raw_data:
    binary_format = pack('fff',raw_data[0][0],raw_data[0][1],raw_data[0][2])
    print(binary_format)
    list_data = [binary_format]

    with open('samples.csv','a') as csvFile:
        writer=csv.writer(csvFile,delimiter=',',quoting=csv.QUOTE_MINIMAL)
        writer.writerows(list_data)                                                  
        csvFile.close()
这是用来解码数据的

import csv
from struct import *

formater = 'fff'
with open('samples.csv', 'rb') as csvFile:
    reader = csv.reader(csvFile)
    for row in reader:
        print(unpack(formater,row[0].encode('UTF-8')))
csvFile.close()
下面的错误是

struct.error:解包需要长度为32的字节对象 像这样的例外输出

76.94,76.944,76.945
76.97,76.979,76.980
77.025,77.025,77.025

下面是打包/解包工作原理的一个小示例

x=pack(“ddd”,22、33、44)

x
在本例中是
b'\x00\x00\x00\x00\x00\x006@\x00\x00\x00\x00\x00\x80@@@x00\x00\x00\x00\x00\x00F@

解包(x)
产生
(22.0、33.0、44.0)


您从CSV检索的数据是否为十六进制数据?

unpack
用于解析二进制数据。你有一个常规的CSV文本文件,用空格作为分隔符。对不起,忘记删除多余的空格了,我已经更新了question@muthu为什么要将它写为二进制?内存使用问题是一个reason@muthu如果是的话,你能把我的答案标记为正确的吗?@muthu好的,有什么问题吗?