C では、stat()
を使用します。 st_dev
を比較します 分野。 Python では、os.stat
同じことをすべきです。
import os
def same_partition(f1, f2):
return os.stat(f1).st_dev == os.stat(f2).st_dev
もう 1 つの方法は、「許可よりも許しを求める方がよい」アプローチです。名前を変更してみて、それが失敗した場合は、適切な OSError
をキャッチします。 そしてコピーアプローチを試してください。例:
import errno
try:
os.rename(source, dest):
except IOError, ex:
if ex.errno == errno.EXDEV:
# perform the copy instead.
これには、すべてのパーティションで st_dev が常に 0 である Windows でも機能するという利点があります。
単にコピーするのではなく、実際にソース ファイルをコピーしてから削除する (つまり、移動を実行する) 場合は、shutil.move が既に目的を果たしていることに注意してください。
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.