【发布时间】:2017-01-23 11:07:06
【问题描述】:
我正在尝试获取带有 .bin 后缀的文件,对其进行编码,然后将其发送给某人(不支持将其作为 .bin 发送)...问题是当我使用命令时:
with open('myfile.bin','r') as fileToCopy:
我收到一条错误消息
'charmap' codec can't decode byte 0x90 in position 192:chatacter maps to <undefined>
所以我想到了一种解决方法,将文件转换为 .txt 然后发送。 我试图将二进制文件复制到文本文件,我使用的代码是
with open('myfile.bin','rb') as fileToCopy:
with open('newfile.txt,'w') as myNewFile:
for line in fileToCopty:
myNewFile.write(line)
.bin 文件包含如下行:
244e 504b 0100 3900 9000 0003 0100 0000
8000 0003 0200 0000 a432 0002 0000 0000
0002 0a02 0103 0000 0001 0a02 0003 0000
0001 0a02 0103 0000 0002 0a02 0003 0000
但结果是一个包含垃圾的文件。 我也尝试将字节解码为 utf-8 格式,但收到此错误消息:
'utf-8' codec can't decode byte 0xfa in position 1:invalid start bye
我用来解码为'utf-8格式的代码是:
with open('myfile.bin','rb') as fileToCopy:
with open('newfile.txt,'w') as myNewFile:
for line in fileToCopty:
myNewFile.write(line.decode('utf-8'))
我做错了吗?还有其他方法吗?
【问题讨论】:
-
".. 结果是一个包含垃圾的文件 .." – 您希望在文本文件中看到什么? “..我还尝试将字节解码为 utf-8 格式..”——这是一个非常糟糕的主意。您只能使用 UTF8
decode方法解码 UTF8 格式的文本。 -
正如 Rad 建议的那样,您尝试做的事情没有任何意义。试着解释为什么你想把二进制文件转换成文本文件而不是问怎么做。
标签: python file text binary bin