Di C, Anda akan menggunakan stat()
dan bandingkan st_dev
bidang. Dengan python, os.stat
harus melakukan hal yang sama.
import os
def same_partition(f1, f2):
return os.stat(f1).st_dev == os.stat(f2).st_dev
Cara lain adalah pendekatan “lebih baik meminta maaf daripada izin”—coba saja ganti namanya, dan jika gagal, ambil OSError
yang sesuai dan coba pendekatan penyalinan. yaitu:
import errno
try:
os.rename(source, dest):
except IOError, ex:
if ex.errno == errno.EXDEV:
# perform the copy instead.
Keuntungannya adalah ini juga akan berfungsi di Windows, di mana st_dev selalu 0 untuk semua partisi.
Perhatikan bahwa jika Anda benar-benar ingin menyalin lalu menghapus file sumber (mis. melakukan pemindahan), daripada hanya menyalin, maka shutil.move sudah akan melakukan apa yang Anda inginkan:
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.