Risposte:
Dovresti sempre usare open().
Come indica la documentazione :
Quando si apre un file, è preferibile utilizzare open () invece di richiamare direttamente questo costruttore. il file è più adatto al test di tipo (ad esempio, scrivendo "isinstance (f, file)").
Inoltre, file() è stato rimosso da Python 3.0.
Due ragioni: la filosofia pitone di "Dovrebbe esserci un modo per farlo" e filesta andando via.
fileè il tipo effettivo (usando ad esempio file('myfile.txt')si chiama il suo costruttore). openè una funzione di fabbrica che restituirà un oggetto file.
In python 3.0 filepasserà dall'essere un built-in all'implementazione da più classi nella iolibreria (in qualche modo simile a Java con lettori bufferizzati, ecc.)
file()è un tipo, come un int o un elenco. open()è una funzione per aprire i file e restituirà un fileoggetto.
Questo è un esempio di quando dovresti usare open:
f = open(filename, 'r')
for line in f:
process(line)
f.close()
Questo è un esempio di quando dovresti usare il file:
class LoggingFile(file):
def write(self, data):
sys.stderr.write("Wrote %d bytes\n" % len(data))
super(LoggingFile, self).write(data)
Come puoi vedere, c'è una buona ragione per esistere entrambi e un chiaro caso d'uso per entrambi.
withistruzione. with open(filename, 'r') as f: \ for line in f: \ process(line). Questo evita la chiusura esplicita. Python 2.6 e versioni successive supportano nativamente l' withistruzione. In Python 2.5, è necessario aggiungere from __future__ import with_statementall'inizio del codice.
fileclasse era dotata di metodi speciali che vengono chiamati automaticamente ogni volta che un file viene aperto tramite withun'istruzione. Questi metodi speciali assicurano che il file sia aperto e chiuso in modo corretto e sicuro.
Funzionalmente, i due sono gli stessi; openchiamerà filecomunque, quindi attualmente la differenza è una questione di stile. I documenti Python consigliano di utilizzare open.
Quando si apre un file, è preferibile utilizzare open () invece di richiamare direttamente il costruttore del file.
Il motivo è che nelle versioni future non è garantito che siano uguali ( opendiventerà una funzione di fabbrica, che restituisce oggetti di diverso tipo a seconda del percorso che sta aprendo).
Usa sempre open () per aprire i file. file () viene effettivamente rimosso in 3.0, ed è deprecato al momento. Hanno avuto una sorta di strana relazione, ma file () sta andando ora, quindi non c'è più bisogno di preoccuparsi.
Quanto segue proviene dai documenti di Python 2.6. [parentesi quadre] aggiunta da me.
Quando si apre un file, è preferibile utilizzare open () invece di richiamare direttamente questo costruttore [file ()]. il file è più adatto al test di tipo (ad esempio, la scrittura di isinstance (f, file)
Secondo l'onorevole Van Rossum, sebbene open () sia attualmente un alias per file () dovresti usare open () perché questo potrebbe cambiare in futuro.