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.