2010-09-15 8 views
15

Je me demande si shutil.move de python est atomique sur linux? Le comportement est-il différent si les fichiers source et de destination sont sur deux partitions différentes ou est-ce le même que lorsqu'ils sont présents sur la même partition?Est-ce que shutil.move() atomique de python sur linux?

Je suis plus préoccupé de savoir si shutil.move est atomique si les fichiers source et destination sont sur la même partition!

+0

Avez-vous lu la source? Il est disponible dans votre bibliothèque Python sur votre ordinateur. Qu'avez-vous vu dans le module 'shutil'? –

Répondre

17

Il n'est pas atomique si les fichiers se trouvent sur des systèmes de fichiers différents. Dans ce cas, python ouvre le fichier source et le fichier de destination, boucle la lecture à partir de la source et écrit dans la desination et finalement supprime le fichier source.

Si le fichier source et le fichier de destination se trouvent sur le même système de fichiers, python utilise l'appel C rename(), qui est atomique.

+0

thnx! cela efface le doute! – Kisalay

+0

@AR Oui c'est (sur linux au moins). Le déplacement d'un répertoire sur le même système de fichiers est une opération atomique. 'shutil.move ('/ tmp/aa /', '/ tmp/bb /' aboutit à cet appel système 'renommer ("/tmp/aa ","/tmp/bb/aa ")'. Le nom du répertoire est juste déplacé dans le système de fichiers. – nos

Questions connexes