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.
Pengembangan fleksibel di Linux, apa lingkungan gratis yang bagus?
Bagaimana proses mencegat stdout dan stderr dari proses lain di Linux?