Ho bisogno di sviluppare uno script che avvierà alcuni calcoli. A desidera che questo script gestisca correttamente^C eliminando alcune directory temporanee. Ho provato diverse versioni di codice nel signal_handler:Python, rimuovi directory: errore File esiste
shutil.rmtree(self.temp)
o anche
os.system("rm -rf " + self.temp)
quando sto interrompendo l'esecuzione e il gestore è chiamato a rimuovere la directory, sto ottenendo gli errori come:
OSError: [Errno 17] File exists : 'foo'
o
rm: Unable to remove directory foo: File exists
Dopo l'esecuzione, la directory che voglio cancellare è vuota, e posso eliminarla con uno rm -r
nella shell. Tuttavia, se eseguo il codice:
for f in os.listdir(self.temp):
os.remove(os.path.join(self.temp,f))
for f in os.listdir(self.temp):
print f
os.rmdir(self.temp)
Sono, ovviamente, ottenendo gli errori, ma il secondo ciclo trova questo file: .nfsA13D3
Chiunque ha una soluzione al mio problema? Grazie!
I file '.nfs *' vengono creati quando si 'rm' un file su un supporto NFS che è ancora in uso da qualcosa. Una volta che il conteggio dei riferimenti sul file '.nfs' scende a 0, dovrebbe * scomparire * (ho avuto a che fare in casi in passato dove non sempre, però, richiede la pulizia manuale). – twalberg