Código:
file('pinax/media/a.jpg', 'wb')
openlugar 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')
openlugar 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 wbindica 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 bse excluye como en just wo 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 exeo 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
wbopción. Al usar la wopción en su lugar, pude hacer que funcionara correctamente.
bmodo 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
openlugar defile.fileestaba 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.