Domanda

Qual è la differenza tra file e open in Python? Quando dovrei usare quale? (Dire che sono in 2.5)

È stato utile?

Soluzione

Dovresti sempre usare open () .

Come indicato nella documentazione :

  

Quando si apre un file, è preferibile   per usare open () invece di invocarlo   costruttore direttamente. il file è di più   adatto al test del tipo (ad esempio,   scrivere " isinstance (f, file) ").

Inoltre, file () è stato rimosso da Python 3.0.

Altri suggerimenti

Due motivi: la filosofia python di " Dovrebbe esserci un modo per farlo " e file sta scomparendo.

file è il tipo effettivo (utilizzando ad esempio file ('myfile.txt') sta chiamando il suo costruttore). open è una funzione di fabbrica che restituirà un oggetto file.

In Python 3.0 il file passerà dall'essere integrato all'essere implementato da più classi nella libreria io (in qualche modo simile a Java con lettori bufferizzati, ecc.)

file () è un tipo, come un int o un elenco. open () è una funzione per l'apertura di file e restituirà un oggetto file .

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.

Funzionalmente, i due sono uguali; open chiamerà comunque file , quindi attualmente la differenza è una questione di stile. I documenti Python raccomandano di usare open .

  

Quando si apre un file, è preferibile utilizzare open () invece di richiamare direttamente il costruttore di file.

Il motivo è che nelle versioni future non è garantito che siano uguali ( open diventerà 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 usare open () invece di invocare direttamente questo costruttore [file ()]. il file è più adatto alla verifica del tipo (ad esempio, la scrittura di isinstance (f, file)

Secondo Van Rossum, sebbene open () sia attualmente un alias per file () dovresti usare open () perché questo potrebbe cambiare in futuro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top