我正在尝试使用.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'))
我做错了吗?还有另一种方法吗?
答案 0 :(得分:2)
目前尚不清楚你要做什么。您要么尝试将现有文件myfile.bin
复制到新文件newfile.txt
,要么尝试将二进制文件转换为人类可读格式。
假设您的目标是将文件myfile.bin
复制到newfile.txt
,您可以查看Python标准库中的模块shutil。这包含高级文件操作,例如copy
,move
,delete
等。
如果您的目标是将文件内容解码为人类可读的格式,并且您对该文件的唯一信息是.bin
结尾,那么您可能会遇到问题。二进制文件可以编码任何信息,如图像,文本或视频。在不知道编码类型的情况下,内容对您来说或多或少是无用的。