V C byste použili stat()
a porovnejte st_dev
pole. V pythonu os.stat
by měl udělat totéž.
import os
def same_partition(f1, f2):
return os.stat(f1).st_dev == os.stat(f2).st_dev
Dalším způsobem je přístup „lépe požádat o odpuštění než svolení“ – zkuste jej přejmenovat, a pokud to selže, zachyťte příslušný OSError
a vyzkoušejte přístup kopírování. tj.:
import errno
try:
os.rename(source, dest):
except IOError, ex:
if ex.errno == errno.EXDEV:
# perform the copy instead.
To má tu výhodu, že to bude fungovat i na Windows, kde je st_dev vždy 0 pro všechny oddíly.
Všimněte si, že pokud skutečně chcete zkopírovat a poté smazat zdrojový soubor (tj. provést přesun), spíše než jen kopírovat, pak Shutil.move již udělá to, co chcete:
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.
Flex vývoj na Linuxu, jaké je dobré bezplatné prostředí?
Jak může proces zachytit stdout a stderr jiného procesu v Linuxu?