2017-06-02 3 views
-1

テキストを書いてから、バイナリデータをファイルに書き出す必要があります。例えば、私は内容のファイルを書きたいと思います:バイナリデータをPythonのテキストファイルに書き込むにはどうすればよいですか?

BESTFORMAT 
NUMLINES 42 
FIELDS FOO BAR SPAM 
DATATYPES INT32 FLOAT64 FLOAT64 
FILETYPE BINARY 
???d?'Ӈ T???'Ѥ??X??\?? 
?? R??&??X??\??????? 
??zR??X??\???????? 
... 

しかし、Pythonの(3.5)であなたは、あなたがASCIIデータを書き込むことができますように、バイナリデータをファイルを開くことができません。


私が試してみた:

  • は(テキストには良いが、私のバイナリデータを変換していない、それはバイナリに私のテキストデータを符号化し、バイナリとしてファイルを開くb'5 42.7 0.8'

  • を出力して(いいえ、それから私が望むものではないバイナリファイルを持っています)

+0

[Pythonのバイナリファイルへの書き込み方法は?](https://stackoverflow.com/questions/18367007/python-how-to-write-to-a-binary-file) –

答えて

0

さて、私はすべての答えを持っていたことが分かりました、私はちょうどそれを知らなかった。

あなたは、単にテキストモードとしてファイルを開きます。

with open("file.best", "w") as fl: 
    fl.write("BESTFORMAT\n\ 
NUMLINES 42\n\ 
FIELDS FOO BAR SPAM\n\ 
DATATYPES INT32 FLOAT64 FLOAT64\n\ 
FILETYPE BINARY\n\ 
") 

が続いAPPENDでファイルを開き、バイナリモード:

with open("file.best", "ab") as fl: 
    fl.write(nparr.tostring()) 

私に追いついた何が私のテキストエディタでファイルを開いてありました16進数のモードなので、ちょうど16進数のコードがたくさんあります。 UTF-8エンコーディングでファイルを開いたときに、ASCIIヘッダーとバイナリデータがその下に表示されていました。

+2

(B "BESTFORMAT \ nは\ FIELDS FOO BAR SPAM \ \ NUMLINES 42 \ n個のn \ DATATYPES INT32のfloat64のfloat64 \ nは\ FILETYPE BINARY \ N \ ") 'fl.writeを使用し'あなたが使用していることができるようにファイルのバイナリモード –

関連する問題