Antwort
File mode, schreiben und binär. Da Sie eine JPG-Datei schreiben, sieht es gut aus.
Aber wenn Sie diese JPG-Datei lesen, soll müssen Sie verwenden 'rb'
Mehr Infos
Unter Windows ‚b‘ in den Modus beigefügten die Datei in Binär-Modus öffnet, so Es gibt auch Modi wie 'rb', 'wb', und 'r + b'. Python unter Windows macht eine Unterscheidung zwischen Text und binären Dateien; Die Zeilenendezeichen in Textdateien werden beim Lesen oder Schreiben von Daten automatisch leicht geändert . Diese hinter den Kulissen Änderung an Datei Daten ist in Ordnung für ASCII-Text Dateien, aber es wird Binärdaten wie in JPEG oder EXE-Dateien beschädigt.
Das ist der Modus, mit dem Sie die Datei öffnen. "wb" bedeutet, dass Sie in die Datei schreiben (w) und dass Sie im Binärmodus schreiben (b).
Schauen Sie sich die Dokumentation für mehr: clicky
Die wb
zeigt an, dass die Datei zum Schreiben in Binär-Modus geöffnet wird.
Auf Unix-Systemen (Linux, Mac OS X usw.) macht der Binärmodus nichts - sie behandeln Textdateien auf die gleiche Weise wie andere Dateien. Unter Windows werden jedoch Textdateien mit leicht modifizierten Zeilenenden geschrieben. Dies verursacht ein ernstes Problem im Umgang mit tatsächlichen Binärdateien, wie exe
oder jpg
Dateien. Wenn Sie also Dateien öffnen, die selbst unter Unix kein Text sein sollen, sollten Sie wb
oder rb
verwenden. Verwenden Sie einfach w
oder r
nur für Textdateien.
Referenz: http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-files
Auch sollten Sie statt file
mit open
betrachten. file
war in Python 2 veraltet (konnte die Version nicht finden) und wurde in py3k entfernt. (Danke Scott)
Siehe this question für weitere Informationen.
Diese Antwort wäre wahrscheinlich besser als Kommentar zur ersten Antwort. –
Die Verwendung von 'file' anstelle von' open' ist in Python 2 für einige Zeit veraltet. Es wurde * aus Python 3 * entfernt. –
@Scott: Danke, habe meine Antwort bearbeitet. @ Brian: Du hast Recht, ich werde das nächste Mal tun, danke. –
- 1. Was ist falsch an diesem Python-Code?
- 2. Was ist der Fehler in diesem Code?
- 3. Was ist das Problem mit diesem Python-Code?
- 4. Was ist der Trick hinter diesem Code?
- 5. Was ist los mit diesem lenker.js code?
- 6. Was ist mit diesem Code bricht PHP4?
- 7. Was ist los mit diesem C++ Code?
- 8. Was ist mit diesem Code falsch?
- 9. Was ist los mit diesem Code-Schnipsel?
- 10. Was ist mit diesem Code falsch?
- 11. Was ist das Problem in diesem Code?
- 12. Was ist Operator => in diesem Code
- 13. Was ist falsch in diesem Javascript-Code?
- 14. Was ist in diesem Code falsch?
- 15. was mit diesem Code-Snippet
- 16. Was ist falsch an diesem bestimmten Python-Code?
- 17. An Experten: Was ist der Unterschied in diesem Code?
- 18. Was ist die Reihenfolge der Konstruktoren in diesem Java-Code?
- 19. Was passiert in diesem Code?
- 20. Was ist der Fehler in diesem Code (BST)
- 21. Was ist der Fehler in diesem Code? (C - Dateibehandlung)
- 22. Java - Was ist die Reihenfolge der Initialisierung in diesem Code?
- 23. Was ist falsch an diesem Code-Schnipsel?
- 24. Wo ist der Syntaxfehler in diesem Python-Code?
- 25. Was ist mit $ non in diesem PHP-Code gemeint?
- 26. Was ist mit diesem Code in C falsch?
- 27. Was ist falsch an diesem Code?
- 28. Was ist das Problem mit diesem Code? [hashtable in C]
- 29. Was ist falsch an diesem JSON-Code?
- 30. Was ist falsch an diesem Code-Snippet?
Konkret, in Windows für eine im Textmodus geöffnete Datei schreibt 'fd.write (" foo \ n ")' tatsächlich auf die Festplatte 'foo \ r \ n' (beachten Sie das' \ r'). –