Réponses:
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 eg file('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 la io
bibliothèque (un peu similaire à Java avec des lecteurs tamponnés, etc.)
file()
est un type, comme un int ou une liste. open()
est une fonction pour ouvrir des fichiers, et retournera un file
objet.
Voici un exemple de cas où vous devriez utiliser open:
f = open(filename, 'r')
for line in f:
process(line)
f.close()
Voici un exemple d'utilisation de file:
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 voir, il y a une bonne raison pour que les deux existent et un cas d'utilisation clair pour les deux.
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 ajouter from __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 une with
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 de file
toute façon, donc actuellement la différence est une question de style. Les documents Python recommandent d'utiliseropen
.
Lors de l'ouverture d'un fichier, il est préférable d'utiliser open () au lieu 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 d'usine, qui retourne des objets de types différents en fonction du chemin qu'il ouvre).
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.
Lors de l'ouverture d'un fichier, il est préférable d'utiliser open () au lieu d'appeler directement ce constructeur [file ()]. file est plus adapté au test de type (par exemple, l'écriture d'une instance (f, fichier)
Selon M. Van Rossum, bien qu'open () soit actuellement un alias pour file (), vous devriez utiliser open () car cela pourrait changer dans le futur.