2010-04-19 4 views

Répondre

65

File mode, écrire et binaire. Puisque vous écrivez un fichier .jpg, ça a l'air bien.

Mais si vous censé lire ce fichier jpg vous devez utiliser 'rb'

Plus d'info

Sous Windows, 'b' est ajoutée au mode ouvre le fichier en mode binaire, donc il y a aussi des modes comme 'rb', 'wb', et 'r + b'. Python sous Windows fait une distinction entre le texte et les fichiers binaires ; les caractères de fin de ligne dans les fichiers texte sont automatiquement modifiés légèrement lorsque les données sont lues ou écrites. Cette modification dans les coulisses à données de fichier est très bien pour les fichiers texte ASCII , mais il va corrompre les données binaires comme cela dans les fichiers JPEG ou EXE.

+3

Concrètement, dans Windows pour un fichier ouvert en mode texte, 'fd.write (" foo \ n ")' écrit réellement sur le disque 'foo \ r \ n' (notez le' \ r'). –

3

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).

Vérifiez la documentation pour plus: clicky

38

Le wb indique que le fichier est ouvert en écriture en mode binaire.

Sur les systèmes Unix (Linux, Mac OS X, etc.), le mode binaire ne fait rien - ils traitent les fichiers texte de la même manière que tous les autres fichiers. Sous Windows, cependant, les fichiers texte sont écrits avec des fins de ligne légèrement modifiées. Cela provoque un problème sérieux lors de l'utilisation de fichiers binaires réels, tels que les fichiers exe ou jpg. Par conséquent, lorsque vous ouvrez des fichiers qui ne sont pas censés être du texte, même sous Unix, vous devez utiliser wb ou rb. Utilisez w ou r uniquement pour les fichiers texte.

Référence: http://docs.python.org/tutorial/inputoutput.html#reading-and-writing-files

4

Aussi, vous devriez envisager d'utiliser open au lieu de file. file a été déprécié dans Python 2 (n'a pas pu trouver quelle version) et a été supprimé dans py3k. (merci Scott)

Voir this question pour plus d'informations.

+1

Cette réponse serait probablement mieux comme un commentaire à la première réponse. –

+2

L'utilisation de 'file' au lieu de' open' a été abandonnée depuis longtemps dans Python 2. Il a été * enlevé * de Python 3. –

+0

@Scott: merci, édité ma réponse. @brian: tu as raison, je le ferai la prochaine fois, merci. –

Questions connexes