GNU/Linux >> Tutoriels Linux >  >> Linux

Comment déterminer si un répertoire est sur la même partition

En C, vous utiliseriez stat() et comparer le st_dev champ. En python, os.stat devrait faire la même chose.

import os
def same_partition(f1, f2):
    return os.stat(f1).st_dev == os.stat(f2).st_dev

Une autre façon est l'approche « mieux vaut demander pardon que permission » :essayez simplement de le renommer, et si cela échoue, attrapez le OSError approprié. et essayez l'approche de copie. c'est-à-dire :

import errno
try:
    os.rename(source, dest):
except IOError, ex:
    if ex.errno == errno.EXDEV:
        # perform the copy instead.

Cela a l'avantage de fonctionner également sous Windows, où st_dev vaut toujours 0 pour toutes les partitions.

Notez que si vous voulez réellement copier puis supprimer le fichier source (c'est-à-dire effectuer un déplacement), plutôt que simplement copier, alors shutdown.move fera déjà ce que vous voulez :

Help on function move in module shutil:

move(src, dst)
    Recursively move a file or directory to another location.

    If the destination is on our current filesystem, then simply use
    rename.  Otherwise, copy src to the dst and then remove src.

Linux
  1. Comment convertir un répertoire en partition sous Linux

  2. Comment créer un lien vers un répertoire

  3. CentOS :copier le répertoire dans un autre répertoire

  4. Comment déterminer la taille de bloc d'une partition ext3 sous Linux ?

  5. Comment copier le chemin du répertoire en préservant les fichiers sous Linux?

Comment déplacer le répertoire personnel vers une nouvelle partition ou un nouveau disque sous Linux

Comment convertir un répertoire en partition sous Linux

Comment installer le système d'exploitation Haiku

Comment copier un répertoire sous Linux

Comment monter une partition Truecrypt cryptée toujours au même point ?

Comment copier un fichier d'un autre répertoire vers celui en cours ?