我正在使用以下代码从具有多行的.csv文件中读取十六进制数据(示例格式:FFFDF3FFFBF2FFFAF210FFF0(:
with open('c:\temp\results.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=",")
line_count = 0
file = open('c:\temp\sent.csv', 'w')
for row in csv_reader:
hex_string = f'{row[0]}'
bytes_object = bytes.fromhex(hex_string)
file.write(str(bytes_object) + 'n')
line_count += 1
file.close()
输出文件包含转换为以下格式的多行(很抱歉是python的新手,所以不确定这是一个字节数组还是它的实际名称(:b'\xff\xfd\xf3\xff\xfb\xf2\xff\xfa\xf2\x10\xff\ xf0\
我正在尝试从这种格式转换回原始格式,读取新创建的.csv文件的行(需要编辑文件中可读的ascii并转换回以在另一个程序中使用(。
file = open('c:\temp\sent.csv', 'r')
for row in file:
byte_string = row
# hex_object = byte_string.hex()
#THIS works if I enter the byte array in directly, but not if reading
#from file hex_object = byte_string.hex()
hex_object = b'xffxfdx03xffxfbx03xffxfdx01xffxfbx17xffxfaxffxf0xffxfdx00xffxfbx00'.hex()
print(hex_object)
#print(byte_string)
# writer.writerow(hex_object)
有办法让它发挥作用吗?我已经尝试了几种编码方法,但由于数据已经是正确的格式,我只需要为.hex((方法获得可读类型的数据。我使用的是最新版本的Python 3.8.1enter code here
您正在存储字节对象的文本表示,然后尝试在不转换为二进制的情况下将其读回。相反,您最好打开二进制格式的输出文件,如下所示:
file = open('c:\temp\sent.csv', 'wb')
并将字节写入文件:
bytes_object = bytes.fromhex(hex_string)
file.write(bytes_object)
(不需要换行符(。
然后做相反的打开二进制格式:
with open('c:\temp\sent.csv', "rb") as f:
data = f.read()
s = data.hex()
print(s)
这里data
是一个字节对象,它具有您要查找的hex()
函数。