私の友人は、Cのfprintf
関数を使用して簡単な詩を書いています。生成されたファイルがバイナリになるように 'wb'オプションを使って書かれました。私はPythonを使用して、詩をプレーンテキストで表示したいと考えています。Pythonを使用してバイナリファイルをプレーンテキストとして読む
私が使用していますコード:
with open("read-me-if-you-can.bin", "rb") as f:
print f.read()
f.close()
私の友人は、Cのfprintf
関数を使用して簡単な詩を書いています。生成されたファイルがバイナリになるように 'wb'オプションを使って書かれました。私はPythonを使用して、詩をプレーンテキストで表示したいと考えています。Pythonを使用してバイナリファイルをプレーンテキストとして読む
私が使用していますコード:
with open("read-me-if-you-can.bin", "rb") as f:
print f.read()
f.close()
をテキストを扱うときの事は、私は現在、このような文字列がたくさんあるそうだ何
ファイルに書き込まれた場合、そのファイルを書き込むときに使用された文字エンコーディングを知る(または正しく推測する)必要があります。ファイルを読み込んでいるプログラムが間違ったエンコーディングを想定している場合、あなたが運が良ければテキストには不思議な文字で終わり、不運な場合は完全なゴミで終わります。
推測しようとしないでください。友人にどのような文字エンコーディングを尋ねる必要がありますか。その文字エンコーディングを指定してファイルを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を試してみることもできます。これはよく使われるエンコーディングです。
私はUTF-8とASCIIの両方を使用しましたが、うまくいきませんでした...どのように使用されたエンコーディングを得ることができますか?私の友人に尋ねる? UNIXコマンドを使用していますか? –
''ファイルpoetry.bin''をあなたのシェルに入れてみてください。あなたの知りたいことが分からなければ、あなたの友人に相談してください。または、適切なテキストエディタでファイルを開きます。ファイルのエンコーディングをどこかに伝える必要があります。 –
read-me-if-you-can.bin:ISO-8859テキスト(行末がなく、非常に長い行)。しかし、ISO-8859をエンコーディング変数に入れると、LookupError:未知のエンコーディング:ISO-8859 –
元の質問は少し不明でした。私はそれを明確にしようとしましたが、誤って意味を変えてしまった場合は、それを元に戻すことができます。 – Tagc
'bytearray'として読み込んで文字列に変換するだけです。 –
私に例を教えてください。 –