Quelle est la différence entre file
et open
en Python? Quand devrais-je utiliser lequel? (Dis que je suis en 2.5)
138
Vous devriez toujours utiliser open()
.
Comme l'indique la documentation :
Lors de l'ouverture d'un fichier, il est préférable d'utiliser open () au lieu d'appeler directement ce constructeur. file est plus adapté au test de type (par exemple, écrire "isinstance (f, file)").
En outre, file()
a été supprimé depuis Python 3.0.
Deux raisons: la philosophie python «Il devrait y avoir une façon de le faire» et
file
disparaît.file
est le type réel (en utilisant egfile('myfile.txt')
appelle son constructeur).open
est une fonction de fabrique qui retournera un objet fichier.En python 3.0
file
va passer du statut intégré à l'implémentation par plusieurs classes de laio
bibliothèque (un peu similaire à Java avec des lecteurs tamponnés, etc.)la source
file()
est un type, comme un int ou une liste.open()
est une fonction pour ouvrir des fichiers, et retournera unfile
objet.Voici un exemple de cas où vous devriez utiliser open:
Voici un exemple d'utilisation de file:
Comme vous pouvez le voir, il y a une bonne raison pour que les deux existent et un cas d'utilisation clair pour les deux.
la source
with
instruction.with open(filename, 'r') as f: \ for line in f: \ process(line)
. Cela évite la fermeture explicite. Python 2.6 et supérieur supportent nativement l'with
instruction. Dans Python 2.5, vous devez ajouterfrom __future__ import with_statement
en haut de votre code.file
classe était équipée de méthodes spéciales qui sont automatiquement appelées chaque fois qu'un fichier est ouvert via unewith
instruction. Ces méthodes spéciales garantissent que le fichier est ouvert et fermé correctement et en toute sécurité.Fonctionnellement, les deux sont identiques;
open
appellera defile
toute façon, donc actuellement la différence est une question de style. Les documents Python recommandent d'utiliseropen
.La raison en est que dans les versions futures, il n'est pas garanti qu'elles soient identiques (
open
deviendra une fonction d'usine, qui retourne des objets de types différents en fonction du chemin qu'il ouvre).la source
N'utilisez jamais open () que pour ouvrir des fichiers. file () est en cours de suppression dans la version 3.0, et est actuellement obsolète. Ils ont eu une sorte de relation étrange, mais file () va maintenant, donc il n'y a plus besoin de s'inquiéter.
Ce qui suit est extrait de la documentation Python 2.6. [support stuff] ajouté par moi.
la source
Selon M. Van Rossum, bien qu'open () soit actuellement un alias pour file (), vous devriez utiliser open () car cela pourrait changer dans le futur.
la source