web-dev-qa-db-fra.com

Python - Quand utiliser le fichier vs ouvert

Quelle est la différence entre file et open en Python? Quand devrais-je utiliser lequel? (Disons que je suis en 2.5)

136
Greg

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.

152
nosklo

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

32
Ryan

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.

19
Jerub

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

7
dF.

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)

4
Devin Jeanpierre

Selon M. Van Rossum, bien que open () soit actuellement un alias pour file (), vous devriez utiliser open () car cela pourrait changer à l'avenir.

2
Martin Beckett