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 filedisparaît.
fileest le type réel (en utilisant eg file('myfile.txt')appelle son constructeur). openest 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 iobibliothè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 fileobjet.
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.
withinstruction. 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' withinstruction. Dans Python 2.5, vous devez ajouter from __future__ import with_statementen haut de votre code.
fileclasse était équipée de méthodes spéciales qui sont automatiquement appelées chaque fois qu'un fichier est ouvert via une withinstruction. Ces méthodes spéciales garantissent que le fichier est ouvert et fermé correctement et en toute sécurité.
Fonctionnellement, les deux sont identiques; openappellera de filetoute 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 ( opendeviendra 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.