Quelle est la différence entre file
et open
en Python? Quand devrais-je utiliser lequel? (Disons que je suis en 2.5)
Vous devriez toujours utiliser open()
.
Comme le documentation indique:
Lors de l'ouverture d'un fichier, il est préférable d'utiliser open () plutôt que d'appeler directement ce constructeur. fichier est plus adapté aux tests de type (par exemple, l’écriture "isinstance (f, fichier)").
De plus, file()
a été supprimé depuis Python 3.0.
Deux raisons: La philosophie python de "Il devrait y avoir un moyen de le faire" et file
a disparu.
file
est le type actuel (en utilisant, par exemple, file('myfile.txt')
appelle son constructeur). open
est une fonction fabrique qui renverra un objet fichier.
Dans python 3.0 file
va passer de la fonction intégrée à celle implémentée par plusieurs classes de la bibliothèque io
(un peu similaire à Java avec lecteurs en mémoire tampon, etc.)
file()
est un type, comme un entier ou une liste. open()
est une fonction permettant d'ouvrir des fichiers et retournera un objet file
.
Voici un exemple d'utilisation d'ouvert:
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 les deux, et un cas d'utilisation clair pour les deux.
Fonctionnellement, les deux sont les mêmes. open
appellera file
de toute façon, donc actuellement, la différence est une question de style. Les Python docs recommandent 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, il n’est pas garanti qu’elles soient identiques (open
deviendra une fonction usine, qui renvoie des objets de types différents en fonction du chemin qu’elle ouvre).
Utilisez uniquement 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 tiré de la Python 2.6 docs. [Substance de crochet]] que j'ai ajoutée.
Lors de l’ouverture d’un fichier, il est préférable d’utiliser open () au lieu d’appeler directement ce constructeur [file ()]. le fichier est plus adapté au test de type (par exemple, l'écriture isinstance (f, fichier)
Selon M. Van Rossum, bien que open () soit actuellement un alias pour file (), vous devriez utiliser open () car cela pourrait changer à l'avenir.