Python写入文件
问题描述:
我在这里遇到了一些问题。 我正在将二进制转换为ascii,以便压缩数据。 所有似乎工作正常,但是当我将'11011011'转换为ascii并尝试将其写入文件时,我不断收到错误Python写入文件
UnicodeEncodeError:'charmap'编解码器无法在位置0编码字符'\ xdb' :字符映射到
这里是我的代码:
byte = ""
handleR = open(self.getInput())
handleW = open(self.getOutput(), 'w')
file = handleR.readlines()
for line in file:
for a in range(0, len(line)):
chunk = result[ord(line[a])]
for b in chunk:
if (len(byte) < 8):
byte+=str(chunk[b])
else:
char = chr(eval('0b'+byte))
print(byte, char)
handleW.write(char)
byte = ""
handleR.close()
handleW.close()
任何帮助表示赞赏,
谢谢
答
我想你想要:
handleR = open(self.getInput(), 'rb')
handleW = open(self.getOutput(), 'wb')
这将确保你正在读写字节流。此外,您可以解析二进制字符串而无需评估:
char = chr(int(byte, 2))
当然,使用位操作会更快。您可以使用<<
(左移)和|
(按位或)来代替附加到字符串。
编辑:对于实际的写作,你可以使用:
handleW.write(bytes([char]))
这将创建并从由一个单一的数字列表写入bytes。
编辑2:更正,应该是:
handleW.write(bytes([int(byte, 2)]))
没有必要使用chr
。
当我读“二进制到ASCII”时,我以为你是以相反的方式,即''\ xdb''到''11011011'' :-) – 2010-06-25 05:28:08