2014-04-22 17 views
14

Sto tentando di creare e scrivere su un file temporaneo su sistema operativo Windows utilizzando Python. Ho usato il modulo Python tempfile per creare un file temporaneo.Autorizzazione negata per scrivere sul file temporaneo

Ma quando vado a scrivere quel file temporaneo ottengo un errore Permission Denied. Non sono autorizzato a scrivere su file temporanei ?! Sto facendo qualcosa di sbagliato? Se voglio creare e scrivere su un file temporaneo come dovrei farlo in Python? Voglio creare un file temporaneo nella directory temporanea per scopi di sicurezza e non localmente (nella directory che l'exe sta eseguendo).

IOError: [Errno 13] Permission denied: 'c:\\users\\blah~1\\appdata\\local\\temp\\tmpiwz8qw'

temp = tempfile.NamedTemporaryFile().name 
f = open(temp, 'w') # error occurs on this line 

risposta

20

NamedTemporaryFile realtà crea il file per voi, non c'è bisogno di voi per aprirlo per la scrittura.

In realtà, il Python docs Stato:

Se il nome può essere utilizzato per aprire il file una seconda volta, mentre il file temporaneo denominato è ancora aperto, varia tra le piattaforme (può essere usato così via Unix; non può su Windows NT o successivo).

Ecco perché stai ricevendo il tuo errore di autorizzazione. Cosa siete probabilmente dopo è:

f = tempfile.NamedTemporaryFile(mode='w') # open file 
temp = f.name        # get name (if needed) 
+0

C'è un utile chiarimento e ulteriori informazioni in questo post http://stackoverflow.com/questions/4290716/how-to-write-bytes-to-a-file- in-python-3-senza-sapere-the-codifica –