Respuesta
File mode, escribir y binario. Como está escribiendo un archivo .jpg, se ve bien.
Pero si se supone que leer ese archivo JPG es necesario utilizar 'rb'
Más información
En Windows, 'b' anexa al modo abre el archivo en modo binario, por lo también hay modos como 'rb', 'wb', y 'r + b'. Python en Windows hace una distinción entre archivos de texto y binarios ; los caracteres de fin de línea en los archivos de texto se modifican automáticamente cuando se leen o escriben los datos. Esta modificación entre bastidores de los datos de archivo está bien para los archivos de texto ASCII , pero dañará los datos binarios de esa manera en los archivos JPEG o EXE.
Ese es el modo con el que está abriendo el archivo. "wb" significa que está escribiendo en el archivo (w) y que está escribiendo en modo binario (b).
Mira la documentación para obtener más: clicky
El wb
indica que el archivo se abre para escribir en modo binario.
En los sistemas Unix (Linux, Mac OS X, etc.), el modo binario no hace nada: trata los archivos de texto de la misma manera que cualquier otro archivo. En Windows, sin embargo, los archivos de texto se escriben con terminaciones de línea ligeramente modificadas. Esto causa un problema grave cuando se trata de archivos binarios reales, como exe
o jpg
. Por lo tanto, al abrir archivos que no se supone que sean texto, incluso en Unix, debe usar wb
o rb
. Use el número w
o el r
solo para archivos de texto.
Referencia: http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-files
También se debe considerar el uso de open
en lugar de file
. file
estaba en desuso en Python 2 (no se pudo encontrar qué versión) y se ha eliminado en py3k. (gracias Scott)
Ver this question para más información.
Esta respuesta probablemente sería mejor como un comentario a la primera respuesta. –
El uso de 'file' en lugar de' open' ha quedado obsoleto en Python 2 durante un tiempo. Ha sido * eliminado * de Python 3. –
@Scott: gracias, edité mi respuesta. @brian: tienes razón, haré esto la próxima vez, gracias. –
- 1. ¿Qué significa este código C++?
- 2. ¿qué significa '__getnewargs__' hacer en este código
- 3. ¿Qué significa "Shift: =" en este código VB6?
- 4. ¿Qué significa este colón en este código C#?
- 5. ¿Qué significa este código (s, e)?
- 6. ¿Qué significa este bloque de código?
- 7. ¿Qué significa este operador?
- 8. ¿Qué significa "&" en este caso?
- 9. ¿Qué significa este colón (:)?
- 10. ¿Qué significa ENDOFTEXT en este código de Perl?
- 11. ¿Qué significa el @ en este ejemplo de código?
- 12. ¿Qué significa `{0: X2}` en este ejemplo de código?
- 13. django request.session.get ("nombre", False) - ¿Qué significa este código?
- 14. ¿Qué significa "~" en python?
- 15. ¿Qué significa este código de sección de renderizado?
- 16. ¿Qué significa este código: "imprimir >> sys.stderr"
- 17. ¿Qué significa este código CSS (división de tamaño de fuente)?
- 18. ¿Qué significa este código jQuery con corchetes y una referencia?
- 19. ¿Qué significa este ~ operador aquí?
- 20. Simplifique este código python
- 21. ¿Qué significa `?` En este Perl regex?
- 22. ¿Qué significa este "iif" en php?
- 23. ¿Qué significa este símbolo en PHP <? =
- 24. ¿Qué significa este símbolo en Mercurial?
- 25. ¿Qué significa este error en c?
- 26. ¿Qué significa% s en Python?
- 27. ¿Qué significa ... en código numpy?
- 28. ¿Qué función de python se ilustra en este código?
- 29. ¿Qué significa esta línea en Python?
- 30. ¿Qué hace este código?
Concretamente, en Windows para un archivo abierto en modo texto, 'fd.write (" foo \ n ")' realmente escribe en el disco 'foo \ r \ n' (observe el' \ r'). –