Código:
file('pinax/media/a.jpg', 'wb')
open
lugar de file
, que quedó obsoleto en Python 2 y se eliminó en Python 3. Consulte stackoverflow.com/questions/112970/…
Código:
file('pinax/media/a.jpg', 'wb')
open
lugar de file
, que quedó obsoleto en Python 2 y se eliminó en Python 3. Consulte stackoverflow.com/questions/112970/…
Respuestas:
Modo de archivo , escritura y binario. Dado que está escribiendo un archivo .jpg, se ve bien.
Pero si se supone que debe leer ese archivo jpg, debe usar 'rb'
Más información
En Windows, la 'b' agregada al modo abre el archivo en modo binario, por lo que 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 ligeramente automáticamente cuando se leen o escriben datos. Esta modificación detrás de escena de los datos de archivo está bien para archivos de texto ASCII, pero dañará datos binarios como ese en archivos JPEG o EXE.
fd.write("foo\n")
realidad se escribe en el disco foo\r\n
(tenga en cuenta el \r
).
El wb
indica que el archivo se abre para escribir en modo binario.
Al escribir en modo binario, Python no realiza cambios en los datos a medida que se escriben en el archivo. Sin embargo, en el modo de texto (cuando b
se excluye como en just w
o cuando especificas el modo de texto con wt
), Python codificará el texto según la codificación de texto predeterminada. Además, Python convertirá los finales de línea ( \n
) a cualquier final de línea específico de la plataforma, lo que dañaría un archivo binario como un archivo exe
o png
.
Por lo tanto, el modo de texto debe usarse al escribir archivos de texto (ya sea usando texto sin formato o un formato basado en texto como CSV), mientras que el modo binario debe usarse al escribir archivos que no son de texto como imágenes.
Referencias:
https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files https://docs.python.org/3/library/functions.html#open
wb
opción. Al usar la w
opción en su lugar, pude hacer que funcionara correctamente.
b
modo solo tenía un efecto en Windows. Eso ahora se ha eliminado de la documentación y el modo binario "debería usarse para todos los archivos que no contienen texto".
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).
Consulte la documentación para obtener más información: clicky
open
lugar defile
.file
estaba en desuso en Python 2 (no se pudo encontrar la versión) y se eliminó en py3k. (gracias Scott) Consulte esta pregunta para obtener más información.