Python shutil
Modul Python membolehkan pembangun menggunakan objek fail dengan sangat mudah dan tanpa memperincikan lebih terperinci mengenai bagaimana sesuatu berfungsi di bawah penutup. Modul ini pada dasarnya menyingkirkan semantik tahap rendah dalam membuat dan menguruskan objek fail, membersihkannya setelah penggunaan selesai dan membolehkan kita memberi tumpuan kepada logik perniagaan aplikasi. Kita akan melihat banyak contoh di sini, mari kita mulakan.
Contohnya dengan modul shuty Python
Kami akan mengkaji pelbagai contoh yang menunjukkan penggunaan Python selendang modul di sini.
Menyalin fail
Dengan fail salinan () berfungsi di selendang modul, kita dapat membuat salinan tepat fail yang ada di mana sahaja di mesin. Mari lihat contoh program untuk menunjukkan bagaimana ini dapat dilakukan:
import osimport tutup
fail_directory = './ Fail '
cetak ('Fail sebelum:', os.listdir (fail_direktori))
selendang.fail salinan ('./ Fail / salam.txt ','./ Fail / hello_again.txt ')
cetak ('Fail selepas:', os.listdir (fail_direktori))
Kami baru saja menyalin fail yang ada di direktori yang diberikan untuk mengklon file dalam direktori yang sama. Inilah yang kita dapat kembali dengan arahan ini:
Salinan fail Python shutil
Perkara yang baik mengenai fungsi ini adalah bahawa fungsi yang disebutkan juga mengambil sebagai memasukkan nama ke fail baru yang akan dibuat.
Menyalin Fail ke direktori lain
Adalah mungkin untuk menyalin fail ke direktori baru dengan shutil salinan() fungsi. Mari kita lihat dalam tindakan:
import osimport tutup
cetak ('Membuat direktori baru.')
os.mkdir ('LinuxHint')
cetak ('Fail sebelum:', os.listdir ('LinuxHint'))
selendang.salinan('./ Fail / salam.txt ',' LinuxHint ')
cetak ('Fail selepas:', os.listdir ('LinuxHint'))
Mari lihat output untuk arahan ini:
Menyalin fail ke direktori baru
Perhatikan bahawa apabila fail disalin menggunakan salinan() fungsi, kebenaran untuk fail juga diklon tetapi metadata fail tidak disalin. Ini bermaksud semasa anda memeriksa kapan fail ini dibuat, ia akan menunjukkan waktu baru ketika anda menjalankan skrip ini.
Menyalin fail dengan Metadata
Pada bahagian terakhir, kami melihat bagaimana kami dapat membuat salinan fail. Bagaimana jika anda ingin membuat klon tepat dari fail yang melibatkan pengklonan metadatanya juga seperti ketika fail dibuat dll. Ini mungkin juga berlaku tetapi ini mungkin tidak berfungsi pada sistem berasaskan POSIX. Mari kita lihat contoh bagaimana ini dapat dilakukan:
import osimport tutup
masa import
new_directory = 'LinuxHint'
src_file = './ Fail / salam.txt '
dest_file = './ LinuxHint / salam.txt '
def file_metadata (fail):
stat_info = os.stat (fail)
cetak ('Mode:', oct (stat_info.st_mode))
cetak ('Dibuat:', masa.ctime (stat_info.st_ctime))
cetak ('Diakses:', masa.ctime (stat_info.st_atime))
cetak ('Diubah suai:', masa.ctime (stat_info.st_mtime))
os.mkdir (direktori_ baru)
cetak ('Metadata untuk fail sumber:')
file_metadata (src_file)
selendang.copy2 (src_file, new_directory)
cetak ('Metadata untuk fail tujuan:')
file_metadata (dest_file)
Inilah yang kita dapat kembali dengan arahan ini apabila kita menjalankannya pada sistem berasaskan POSIX (metadata tidak diklon sepenuhnya):
Salin fail dengan metadata
Pada sistem berasaskan bukan POSIX, bahkan masa yang dibuat dan diakses akan sesuai dengan tepat.
Direktori lengkap pengklonan
Pada bahagian terakhir, kami melihat bagaimana kami dapat membuat salinan fail. Di sini, kita akan melihat bagaimana kita dapat mengklon direktori lengkap secara berulang. Ini bermaksud bahawa jika direktori lain ada di direktori yang ingin kita kloning, mereka juga akan diklon.
import kertasimport tutup
import os
src_directory = './ Fail '
dest_directory = './ Petunjuk Linux '
selendang.copytree (src_directory, dest_directory)
cetak ('Kandungan Sumber:')
kertas cetak.kertas cetak (os.listdir (src_directory))
cetak ('Kandungan Destinasi:')
kertas cetak.kertas cetak (os.listdir (dest_directory))
Mari lihat output untuk arahan ini:
Menduplikasi direktori
Perhatikan bahawa direktori yang kita lalui untuk copytree () berfungsi sebagai direktori tujuan tidak mesti ada sebelum kita menjalankan program ini.
Memadamkan Direktori
Menghapus direktori sangat mudah dengan rmtree () berfungsi dalam modul. Mari lihat fungsi ini di sini:
import kertasimport tutup
import os
delete_directory = 'LinuxHint'
current_directory = '.'
cetak ('Kandungan sebelum penyingkiran:')
kertas cetak.kertas cetak (os.listdir (semasa_direktori))
selendang.rmtree (delete_directory)
cetak ('Kandungan selepas penyingkiran:')
kertas cetak.kertas cetak (os.listdir (semasa_direktori))
Setelah menjalankan skrip, LinuxHint direktori dihapuskan bersama dengan kandungannya. Inilah yang kita dapat kembali dengan arahan ini:
Padam direktori
Mencari fail
Sekiranya anda ingin mencari fail yang terdapat pada pemboleh ubah PATH pada mesin anda, kami dapat menggunakan yang () berfungsi untuk mencari fail itu dengan nama. Mari lihat contoh demonstrasi untuk fungsi ini:
import tutupmencetak (selendang.yang ('bsondump'))
mencetak (selendang.yang ('no-file-found'))
Inilah yang kita dapat kembali dengan arahan ini:
Cari fail di PATH
Memantau Ruang Sistem Fail
Dengan modul shutil, kita mempunyai fungsi disk_usage () di mana kita dapat memperoleh maklumat ruang cakera tentang mesin kita juga. Mari lihat contoh yang menunjukkan data ini dengan cara yang dapat dibaca oleh manusia:
import tutuptotal_b, used_b, free_b = shutil.penggunaan cakera('.')
gb = 10 ** 9 # GB == gigabait
cetak ('Jumlah: : 6.2f GB '.format (total_b / gb))
cetak ('Digunakan: : 6.2f GB '.format (used_b / gb))
cetak ('Percuma: : 6.2f GB '.format (percuma_b / gb))
Inilah yang kita dapat kembali dengan arahan ini:
Mencari ruang sistem fail
Mengarkibkan direktori
Sebagai contoh terakhir, kita akan melihat bagaimana kita dapat mengarkibkan modul shutel direktori buat_arkib () fungsi. Mari lihat contoh program:
import tutupimport os
arkib_direktori = \
os.jalan.pengembang (os.jalan.sertai ('tujuan-direktori-jalan', 'linuxhint'))
root_dir = os.jalan.pengembang (os.jalan.sertai ('~', '.ssh '))
selendang.make_archive (archive_directory, 'gztar', root_dir)
Inilah yang kita dapat kembali dengan arahan ini:
Direktori pengarkiban
Sekiranya anda menyaharkib fail TAR dan melihatnya, ia akan mengandungi semua fail .ssh fail direktori di dalamnya.
Kesimpulannya
Dalam pelajaran ini, kita melihat bagaimana kita dapat menguruskan objek fail dengan operasi fail tahap tinggi dengan mudah selendang modul di Python. Operasi seperti menyalin kandungan fail, membuat salinan baru fail dll. kelihatan senang dengan modul ini.