Python - Quand utiliser fichier vs ouvert
Question
Quelle est la différence entre fichier
et open
en Python? Quand devrais-je utiliser lequel? (Disons que je suis en 2.5)
La solution
Vous devriez toujours utiliser open ()
.
Selon la documentation :
Il est préférable d’ouvrir un fichier. d'utiliser open () au lieu de l'invoquer constructeur directement. le fichier est plus adapté aux essais de type (par exemple, écrire "isinstance (f, file)").
De même, file ()
a été supprimé depuis Python 3.0.
Autres conseils
Deux raisons: la philosophie python de "Il devrait exister un moyen de le faire" et fichier
s'en va.
fichier
est le type actuel (en utilisant, par exemple, le fichier ('myfile.txt')
appelle son constructeur). open
est une fonction fabrique qui renverra un objet de fichier.
En python 3.0, le fichier
ne sera plus intégré à implémenté mais implémenté par plusieurs classes de la bibliothèque io
(un peu similaire à Java avec des lecteurs tamponnés, etc.)
file ()
est un type, comme un entier ou une liste. open ()
est une fonction permettant d'ouvrir des fichiers et renvoie un objet fichier
.
Ceci est un exemple du moment où vous devriez utiliser open:
f = open(filename, 'r')
for line in f:
process(line)
f.close()
Voici un exemple d'utilisation du fichier:
class LoggingFile(file):
def write(self, data):
sys.stderr.write("Wrote %d bytes\n" % len(data))
super(LoggingFile, self).write(data)
Comme vous pouvez le constater, il existe une bonne raison pour l'existence des deux et un cas d'utilisation clair pour les deux.
Sur le plan fonctionnel, les deux sont identiques. open
appellera quand même fichier
, donc la différence est pour le moment une question de style. La la documentation Python recommande d'utiliser open
.
Lors de l'ouverture d'un fichier, il est préférable d'utiliser open () plutôt que d'appeler directement le constructeur de fichier.
La raison en est que, dans les versions futures, elles ne sont pas garanties identiques ( open
deviendra une fonction usine, qui renvoie des objets de types différents en fonction du chemin qu'il ouvre).
N'utilisez jamais open () pour ouvrir des fichiers. file () est en train d'être supprimé dans la version 3.0 et est obsolète pour le moment. Ils ont eu une sorte de relation étrange, mais file () est en cours, il n’ya donc plus lieu de s’inquiéter.
Ce qui suit est issu de la documentation Python 2.6. [trucs de support] ajouté par moi.
Lors de l’ouverture d’un fichier, il est préférable d’utiliser open () au lieu d’appeler directement le constructeur [file ()]. fichier est plus adapté aux tests de type (par exemple, l’écriture est isstance (f, fichier)
Selon M. Van Rossum, même si open () est actuellement un alias pour file (), vous devez utiliser open () car cela pourrait changer à l'avenir.