2010-09-15 22 views
15

Me pregunto si python's shutil.move es atómico en Linux? ¿El comportamiento es diferente si los archivos de origen y de destino están en dos particiones diferentes o es lo mismo que cuando están presentes en la misma partición?¿Es python's shutil.move() atomic en Linux?

¡Me preocupa más saber si el shutil.move es atómico si los archivos de origen y de destino están en la misma partición!

+0

¿Leyó la fuente? Está disponible en tu biblioteca de Python en tu computadora. ¿Qué viste en el módulo 'shutil'? –

Respuesta

17

No es atómico si los archivos están en diferentes sistemas de archivos. En ese caso, python abre el archivo de origen y destino, realiza un ciclo al leer desde la fuente y escribe en la designación y finalmente desvincula el archivo de origen.

Si el archivo de origen y el de destino están en el mismo sistema de archivos, python usa la llamada C de cambio de nombre(), que es atómica.

+0

thnx! ¡eso borra la duda! – Kisalay

+0

@AR Sí lo es (al menos en Linux). Mover un directorio en el mismo sistema de archivos es una operación atómica. 'shutil.move ('/ tmp/aa /', '/ tmp/bb /' da como resultado una llamada al sistema 'rename ("/tmp/aa ","/tmp/bb/aa ")'. El nombre del directorio simplemente se mueve en el sistema de archivos. – nos

Cuestiones relacionadas