2013-02-20 12 views
6

Come guardare Python e vedere se c'è un file di cui ha bisogno e se non ne crea uno?Come far controllare a Python se esiste un file e crearlo se non lo fa?

Fondamentalmente voglio che Python cerchi il mio nome file KEEP-IMPORTANT.txt, ma quando creo la mia app utilizzando py2app non funziona perché non ha il file. Quando provo a creare il file non funzionerà (penso perché Python deve generarlo).

Voglio che Python verifichi se il file esiste in modo che se lo fa, non genera il file, altrimenti lo fa.

+0

Che cosa vuoi fare con il file? Sovrascriverlo? Leggilo? Aggiungi ad esso? Entrambi? –

+2

"Quando provo a creare il file non funzionerà (penso che Python debba generarlo)." Difficilmente. Dovresti aggiungere ulteriori dettagli e mostrare il codice pertinente che hai. –

+0

Il file deve esistere che è tutto – user2093174

risposta

7

Similar question

Questo è il modo migliore:

try: 
    with open(filename) as file: 
     # do whatever 
except IOError: 
    # generate the file 

C'è anche os.path.exists(), ma questo può essere un problema di sicurezza.

+0

Ho inventato un esempio per testare questo metodo per i difetti. In Python 2.7 gli errori di autorizzazione sollevano IOError. Ho revocato l'accesso in lettura per un file di test ma ho permesso di scrivere. Cercando di leggere il file è stato generato un errore IOError e sono riuscito a sovrascriverlo utilizzando questa eccezione. Questo non funzionerà in python 3 poiché la lettura del file produce PermissionError. Questo è probabilmente uno scenario di nicchia che è improbabile che accada. Mi chiedo in quali altri modi IOError potrebbe verificarsi con un file esistente. – Octipi

+0

Se non si dispone delle autorizzazioni rw per il file, non si tenta di effettuare il ribobinamento solo sollevando un altro errore IOError? –

+0

In python 3 sollevere PermissionError. Ho provato lo scenario improbabile che avevi i permessi di scrittura ma non le autorizzazioni di lettura. In questo caso, per python 2.7, leggendo il file sollevato IOError, potrei comunque scrivere con autorizzazioni di scrittura. – Octipi

7

Questo one-liner controlla se il file esiste e lo crea se non lo fa.

open("KEEP-IMPORTANT.txt", "a") 
+0

+1 per rendere il file e senza errori - ma per quanto riguarda anche l'eliminazione dei bit precedenti del file? – cutrightjm