44 votes

f.write vs print >> f

Il existe au moins deux façons d'écrire dans un fichier en python :

f = open(file, 'w')
f.write(string)

ou

f = open(file, 'w')
print >> f, string     # in python 2
print(string, file=f)  # in python 3

Y a-t-il une différence entre les deux ? Ou l'un d'entre eux est-il plus pythique ? J'essaie d'écrire un tas de HTML dans un fichier et j'ai donc besoin d'un tas d'instructions d'écriture/impression dans mon fichier (mais je n'ai pas besoin d'un moteur de création de modèles).

2voto

jsbueno Points 22212

En résumé : utilisez file.write pour écrire dans des fichiers.

L'idiome ">>" pour l'impression a été emprunté au C++ dans les premiers jours de Python, et est assez peu pythonique - à tel point qu'il n'existe plus dans Python 3.x - où l'on peut utiliser l'impression, maintenant une fonction au lieu d'une instruction, pour écrire dans un fichier - mais sans syntaxe spéciale pour cela.

Comme @agf le souligne dans sa réponse, l'utilisation de "print" pour écrire dans un fichier fait plus de choses que le simple fait d'appeler write - il appelle automatiquement str(obj) pour obtenir une représentation sous forme de chaîne de l'objet, alors que .write nécessite qu'une chaîne (octet) soit passée en paramètre - dans le monde Python, "l'explicite est meilleur que l'implicite", donc une raison de plus pour utiliser file.write à la place.

1voto

wim Points 35274

C'est la méthode préférée, qui utilise des gestionnaires de contexte :

with open(file, 'w') as f:
  f.write(string)

Sur python 2, je préfère file.write parce que le >> est dépréciée. Pour python 3, vous préférerez peut-être utiliser la fonction print, qui fait des choses supplémentaires (par exemple, convertir automatiquement les nombres en chaînes de caractères, etc.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X