2010-06-29 9 views
6

Tengo un tal código:Python: Comprobación cuando shutil.copyfile está hecho

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

Y aquí está la cuestión, en #do further actions utilizo los iles f copiados por lo tanto necesito para asegurarse de que las funciones terminan su shutil.copyfile tarea. ¿Cómo puedo asegurarme de esto?

Respuesta

5

Las funciones del shutil deben regresar solo después de que la operación haya finalizado. Si nada gracioso está sucediendo en el nivel del sistema operativo, debería ser seguro de esta manera.

Si conoce el tamaño del archivo, puede verificar si es correcto.

+2

Los sistemas operativos modernos hacen un almacenamiento en caché pesado en el nivel del sistema de archivos (en las distribuciones de Linux modernas, puede tomar hasta un minuto hasta que los datos se escriben realmente) y los controladores de disco realizan un almacenamiento en caché adicional. Por supuesto, este último no puede ser controlado por las aplicaciones. – Philipp

+0

Pero los datos correctos (en caché) deben devolverse si una aplicación solicita el archivo. Estaba pensando más en NFS con la opción asíncrona o algo similar. –

+0

En mi caso, estaba ejecutando subprocesos dependientes sin '.wait()' ing para que finalicen. – ThorSummoner

3

copyfile es una función de bloqueo. Para cuando llegue al #do further actions, siempre se debe hacer. ¿Estás teniendo problemas donde no está?

Cuestiones relacionadas