Code:
file('pinax/media/a.jpg', 'wb')
open
place de file
, qui était obsolète dans Python 2 et supprimé dans Python 3. Voir stackoverflow.com/questions/112970/...
Code:
file('pinax/media/a.jpg', 'wb')
open
place de file
, qui était obsolète dans Python 2 et supprimé dans Python 3. Voir stackoverflow.com/questions/112970/...
Réponses:
Mode fichier , écriture et binaire. Puisque vous écrivez un fichier .jpg, ça a l'air bien.
Mais si vous êtes censé lire ce fichier jpg, vous devez utiliser 'rb'
Plus d'informations
Sous Windows, «b» ajouté au mode ouvre le fichier en mode binaire, il existe donc également des modes comme «rb», «wb» et «r + b». Python sur Windows fait une distinction entre les fichiers texte et binaires; les caractères de fin de ligne dans les fichiers texte sont automatiquement légèrement modifiés lorsque les données sont lues ou écrites. Cette modification en arrière-plan des données de fichier convient aux fichiers texte ASCII, mais elle corrompra les données binaires comme celles des fichiers JPEG ou EXE.
fd.write("foo\n")
écrit effectivement sur disque foo\r\n
(notez le \r
).
Le wb
indique que le fichier est ouvert pour l'écriture en mode binaire.
Lors de l'écriture en mode binaire, Python n'apporte aucune modification aux données lorsqu'elles sont écrites dans le fichier. En mode texte (lorsque le b
est exclu comme juste w
ou lorsque vous spécifiez le mode texte avec wt
), cependant, Python encodera le texte en fonction du codage de texte par défaut. De plus, Python convertira les fins de ligne ( \n
) en quelle que soit la fin de ligne spécifique à la plate-forme, ce qui corromprait un fichier binaire comme un fichier exe
ou png
.
Le mode texte doit donc être utilisé lors de l'écriture de fichiers texte (qu'il s'agisse de texte brut ou d'un format basé sur du texte comme CSV), tandis que le mode binaire doit être utilisé lors de l'écriture de fichiers non texte comme des images.
Références:
https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files https://docs.python.org/3/library/functions.html#open
wb
option. En utilisant l' w
option à la place, j'ai pu le faire fonctionner correctement.
b
mode n'avait d'effet que sur Windows. Cela a maintenant été supprimé de la documentation et le mode binaire "devrait être utilisé pour tous les fichiers qui ne contiennent pas de texte".
C'est le mode avec lequel vous ouvrez le fichier. "wb" signifie que vous écrivez dans le fichier (w) et que vous écrivez en mode binaire (b).
Consultez la documentation pour en savoir plus: clicky
open
au lieu defile
.file
était obsolète dans Python 2 (impossible de trouver quelle version) et a été supprimé dans py3k. (merci Scott) Voir cette question pour plus d'informations.