Je suis quelque peu en désaccord avec plusieurs des opinions exprimées ici, à savoir que print >> f
est redondant et devrait être évité en faveur de f.write
.
print
y file.write
sont des opérations très différentes. file.write
écrit directement une chaîne de caractères dans un fichier. print
est plutôt "rendre les valeurs à stdout comme du texte". Naturellement, le résultat du rendu d'une chaîne en tant que texte est juste la chaîne, donc print >> f, my_string
y f.write(my_string)
sont presque interchangeables (à l'exception de l'ajout d'une nouvelle ligne). Mais votre choix entre file.write
y print
devrait normalement être basée sur ce que vous faites ; écrivez-vous une chaîne de caractères dans un fichier, ou rendez-vous des valeurs dans un fichier ?
Bien sûr, print
n'est pas strictement nécessaire en ce sens que vous pouvez l'implémenter avec file.write
. Mais alors file.write
n'est pas strictement nécessaire, car vous pouvez l'implémenter avec les opérations de l'option os
pour traiter les descripteurs de fichiers. En réalité, il s'agit d'opérations à différents niveaux, et vous devriez utiliser celui qui est le plus approprié à votre utilisation (normalement le niveau sur lequel travaille le code voisin, ou le niveau le plus élevé qui ne vous gêne pas).
J'ai l'impression que le print >> f
est assez horrible, et constitue un très bon exemple de la raison pour laquelle les print
aurait dû être une fonction depuis le début. Ce point est nettement amélioré dans Python 3. Mais même si vous écrivez du code Python 2 que vous prévoyez de porter vers Python 3, il est toujours possible d'utiliser des fonctions. beaucoup plus facile à convertir print >> f, thing1, thing2, thing3, ...
a print(thing1, thing2, thing3, file=f)
qu'il ne l'est pour convertir la circonlocution où vous roulez votre propre code pour faire l'équivalent de print
et ensuite appeler f.write(text)
. Je suis presque sûr que le convertisseur semi-automatique de Python 2 à Python 3 fera même la conversion pour vous, ce qu'il ne pourrait pas faire si vous évitez l'option print >> f
formulaire.
En résumé, utilisez print
pour rendre les valeurs à stdout (ou à un fichier). Utilisez f.write
pour écrire du texte dans un fichier.