Code:
file('pinax/media/a.jpg', 'wb')
open
stattdessen anstelle von file
, was in Python 2 veraltet und in Python 3 entfernt wurde. Siehe stackoverflow.com/questions/112970/…
Code:
file('pinax/media/a.jpg', 'wb')
open
stattdessen anstelle von file
, was in Python 2 veraltet und in Python 3 entfernt wurde. Siehe stackoverflow.com/questions/112970/…
Antworten:
Dateimodus , Schreiben und Binär. Da Sie eine JPG-Datei schreiben, sieht sie gut aus.
Aber wenn Sie diese JPG-Datei lesen sollen, müssen Sie verwenden 'rb'
Mehr Info
Unter Windows öffnet 'b', das an den Modus angehängt ist, die Datei im Binärmodus, daher gibt es auch Modi wie 'rb', 'wb' und 'r + b'. Python unter Windows unterscheidet zwischen Text- und Binärdateien. Die Zeilenendezeichen in Textdateien werden beim Lesen oder Schreiben von Daten automatisch geringfügig geändert. Diese Änderung der Dateidaten hinter den Kulissen ist für ASCII-Textdateien in Ordnung, beschädigt jedoch Binärdaten wie JPEG- oder EXE-Dateien.
fd.write("foo\n")
schreibt in Windows für eine im Textmodus geöffnete Datei tatsächlich auf die Festplatte foo\r\n
(beachten Sie die \r
).
Das wb
zeigt an, dass die Datei zum Schreiben im Binärmodus geöffnet ist.
Beim Schreiben im Binärmodus nimmt Python keine Änderungen an Daten vor, während diese in die Datei geschrieben werden. Im Textmodus (wenn das b
wie gerade ausgeschlossen ist w
oder wenn Sie den Textmodus mit angeben wt
) codiert Python den Text jedoch basierend auf der Standardtextcodierung. Darüber hinaus konvertiert Python die Zeilenenden ( \n
) in die plattformspezifischen Zeilenenden, wodurch eine Binärdatei wie ein exe
oder beschädigt wirdpng
Datei beschädigt wird.
Der Textmodus sollte daher beim Schreiben von Textdateien verwendet werden (ob im Klartext oder in einem textbasierten Format wie CSV), während der Binärmodus beim Schreiben von Nicht-Textdateien wie Bildern verwendet werden muss.
Verweise:
https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files https://docs.python.org/3/library/functions.html#open
wb
Option geöffnet wurde, ist ein Fehler aufgetreten. Durch die Verwendung der w
Option konnte ich dafür sorgen, dass sie ordnungsgemäß funktioniert.
b
Modus nur Auswirkungen auf Windows hatte. Das wurde jetzt aus der Dokumentation entfernt und der Binärmodus "sollte für alle Dateien verwendet werden, die keinen Text enthalten".
In diesem Modus öffnen Sie die Datei. "wb" bedeutet, dass Sie in die Datei (w) schreiben und im Binärmodus (b) schreiben.
Weitere Informationen finden Sie in der Dokumentation: clicky
open
anstelle von zu verwendenfile
.file
wurde in Python 2 veraltet (konnte nicht finden, welche Version) und wurde in py3k entfernt. (danke Scott) Siehe diese Frage für weitere Informationen.