我的一个朋友用C fprintf
函数编写了简单的诗歌。它是使用'wb'选项编写的,因此生成的文件是二进制的。我想用Python用纯文本来展示诗歌。
我目前得到的是很多这样的字符串:
我正在使用的代码:
with open("read-me-if-you-can.bin", "rb") as f:
print f.read()
f.close()
答案 0 :(得分:1)
问题是,在处理写入文件的文本时,您必须知道(或正确猜测)编写所述文件时使用的字符编码。如果读取文件的程序在这里采用了错误的编码,那么如果你运气好的话,你会在文本中找到奇怪的字符,如果你运气不好的话,你会得到完全的垃圾。
不要试图猜测,试着去了解:你需要问你的朋友他或她将诗歌文字写入文件的字符编码。然后,您必须在Python中打开指定该字符编码的文件。让我们说他/她的回答是“UTF-16-LE”(为了举例),然后写下:
with open("poetry.bin", encoding="utf-16-le") as f:
print(f.read())
似乎你仍然使用Python 2,所以你写道:
import io
with io.open("poetry.bin", encoding="utf-16-le") as f:
print f.read()
你可以先尝试使用UTF-8,这是一种经常使用的编码。