Codice:
file('pinax/media/a.jpg', 'wb')
open
invece di file
, che è stato deprecato in Python 2 e rimosso in Python 3. Vedere stackoverflow.com/questions/112970/...
Codice:
file('pinax/media/a.jpg', 'wb')
open
invece di file
, che è stato deprecato in Python 2 e rimosso in Python 3. Vedere stackoverflow.com/questions/112970/...
Risposte:
Modalità file , scrittura e binario. Dato che stai scrivendo un file .jpg, sembra a posto.
Ma se dovessi leggere quel file jpg devi usare 'rb'
Ulteriori informazioni
Su Windows, "b" aggiunto alla modalità apre il file in modalità binaria, quindi ci sono anche modalità come "rb", "wb" e "r + b". Python su Windows fa una distinzione tra file di testo e file binari; i caratteri di fine riga nei file di testo vengono leggermente modificati automaticamente quando i dati vengono letti o scritti. Questa modifica dietro le quinte ai dati del file va bene per i file di testo ASCII, ma corromperà i dati binari come quelli nei file JPEG o EXE.
fd.write("foo\n")
scrive effettivamente su disco foo\r\n
(notare il \r
).
Il wb
indica che il file è aperto per la scrittura in modalità binaria.
Quando si scrive in modalità binaria, Python non apporta modifiche ai dati mentre vengono scritti nel file. In modalità testo (quando b
è escluso come in just w
o quando si specifica la modalità testo con wt
), tuttavia, Python codificherà il testo in base alla codifica di testo predefinita. Inoltre, Python convertirà le terminazioni di riga ( \n
) in qualunque sia la fine di riga specifica della piattaforma, il che corromperà un file binario come un file exe
o png
.
La modalità testo dovrebbe quindi essere utilizzata quando si scrivono file di testo (sia che si utilizzi testo normale o un formato basato su testo come CSV), mentre la modalità binaria deve essere utilizzata quando si scrivono file non di testo come immagini.
Riferimenti:
https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files https://docs.python.org/3/library/functions.html#open
wb
opzione. Utilizzando w
invece l' opzione, sono stato in grado di farlo funzionare correttamente.
b
modalità aveva effetto solo su Windows. Ora è stato rimosso dalla documentazione e la modalità binaria "dovrebbe essere utilizzata per tutti i file che non contengono testo".
Questa è la modalità con cui stai aprendo il file. "wb" significa che stai scrivendo nel file (w) e che stai scrivendo in modalità binaria (b).
Controlla la documentazione per ulteriori informazioni: cliccabile
open
posto difile
.file
era deprecato in Python 2 (impossibile trovare quale versione) ed è stato rimosso in py3k. (grazie Scott) Vedi questa domanda per maggiori informazioni.