2010-06-29 9 views
6

Ho un tale codice:Python: Controllo quando shutil.copyfile è fatto

for file in file_list: 
    shutil.copyfile(file,newpath) 
#do further actions 

Ed ecco la domanda, a #do further actions io uso le iles f copiati quindi ho bisogno di assicurarsi che i shutil.copyfile funzioni terminare il loro compito. Come posso essere sicuro di questo?

risposta

5

Le funzioni di chiusura devono essere restituite solo al termine dell'operazione. Se non succede nulla di divertente a livello di sistema operativo, dovrebbe essere sicuro in questo modo.

Se si conosce la dimensione del file, è possibile verificare se è corretto.

+2

I moderni sistemi operativi eseguono il caching pesante a livello di file system (nelle moderne distribuzioni Linux, può richiedere fino a un minuto fino a quando i dati vengono effettivamente scritti) e i controller del disco eseguono il caching aggiuntivo. Naturalmente, quest'ultimo non può essere controllato dalle applicazioni. – Philipp

+0

Ma i dati corretti (memorizzati nella cache) devono essere restituiti se un'applicazione richiede il file. Stavo pensando più a NFS con l'opzione asincrona o qualcosa di simile. –

+0

Nel mio caso stavo eseguendo sottoprocessi dipendenti senza che '.wait()' non riuscisse a finire. – ThorSummoner

3

copyfile è una funzione di blocco. Dal momento in cui si arriva a #do further actions dovrebbe sempre essere fatto. Stai avendo problemi dove non lo è?