我正在编写一个python脚本,它将包含每行一对数字的ascii文件转换为直接二进制表示。这是我的剧本:
in_file = open("p02_0609.bin", 'r')
out_file = open("sta013.bin", 'w')
out_data = bytearray()
for line in in_file:
addr, i2c_data = [int(x) for x in line.split(" ")]
out_data.append(addr)
out_data.append(i2c_data)
out_file.write(out_data)
out_file.close()
in_file.close()
以及它正在阅读的文件样本(总共约2000行)
58 1
42 4
40 0
41 0
32 0
33 0
34 0
35 0
36 0
37 0
38 0
39 0
40 1
40 2
33 143
40 3
33 0
40 4
40 5
40 6
40 7
40 8
40 9
40 10
40 11
输出文件以奇数字节结束,因为所有数据都是成对的,所以它不应该超过预期的80字节。在用十六进制编辑器探索之后,我终于找到了罪魁祸首。每个" 10" (Ascii LF)在它前面附加了一个CR。我如何让它停止这样做?
Tl; dr:Python是一个笨蛋,在二进制数据中将CR添加到LF,这是没有意义的。怎么解决?
答案 0 :(得分:0)
您正在使用文本文件,因此通过打开功能自动添加行结尾。你需要使用模式' wb'用于读取和写入字节。