2017-06-02 6 views
-1

Ich muss Text schreiben, dann binäre Daten in eine Datei. Zum Beispiel würde Ich mag die Datei mit Inhalt schreiben:Wie schreibe ich Binärdaten in eine Textdatei in Python?

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

jedoch in Python (3.5) Sie eine Datei nicht in einer Art und Weise öffnen können, die Sie ASCII-Daten schreiben können, dann Binärdaten.


Ich habe versucht:

  • Konvertieren meiner Binärdaten Text (nicht gut, da es b'5 42.7 0.8'

  • ausgibt, um binäre meine Textdaten-Codierung und die Datei als binäre Öffnung (nicht gut, da ich dann eine binäre Datei habe, was ich nicht will)

+0

Mögliches Duplikat von [Python, wie man in eine binäre Datei schreibt?] (Https://stackoverflow.com/questions/18367007/python-how-to-write-to-a-binary-file) –

Antwort

0

Okay, stellt sich heraus, ich hatte die ganze Zeit die Antwort, ich wusste es einfach nicht.

Sie einfach die Datei als Textmodus öffnen:

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\ 
") 

dann die Datei im Anfügen öffnen, Binär-Modus:

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

Was mein Texteditor war auf mich fing die Datei öffnet in Hexadezimal-Modus, so dass ich nur ein paar Hex-Codes. Als ich die Datei in UTF-8-Kodierung öffnete, sah ich den ASCII-Header und darunter die Binärdaten.

+2

konnten Sie haben verwendet 'fl.write (b "BESTFORMAT \ n \ numLines 42 \ n \ FIELDS FOO BAR SPAM \ n \ Datentypen INT32 FLOAT64 FLOAT64 \ n \ FILETYPE BINARY \ n \ ")', so dass Sie verwendet haben, könnte die Binärmodus der Datei –

Verwandte Themen