In C würden Sie stat()
verwenden und vergleichen Sie die st_dev
aufstellen. In Python os.stat
sollte dasselbe tun.
import os
def same_partition(f1, f2):
return os.stat(f1).st_dev == os.stat(f2).st_dev
Eine andere Möglichkeit ist der Ansatz „Lieber um Verzeihung als um Erlaubnis bitten“ – versuchen Sie einfach, es umzubenennen, und wenn das fehlschlägt, fangen Sie den entsprechenden OSError
ab und versuchen Sie den Kopieransatz. dh:
import errno
try:
os.rename(source, dest):
except IOError, ex:
if ex.errno == errno.EXDEV:
# perform the copy instead.
Das hat den Vorteil, dass es auch unter Windows funktioniert, wo st_dev für alle Partitionen immer 0 ist.
Beachten Sie, dass, wenn Sie die Quelldatei tatsächlich kopieren und dann löschen möchten (dh eine Verschiebung durchführen), anstatt nur zu kopieren, shutdown.move bereits das tut, was Sie wollen:
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.