Python

Gunakan python untuk zip fail dan direktori

Gunakan python untuk zip fail dan direktori
Fail yang dimampatkan mengandungi banyak fail, direktori dan subdirektori. Banyak aplikasi tersedia untuk membuat fail kompres dari fail atau direktori besar dan mengambil fail atau folder dengan mengekstrak fail yang dimampatkan. Apabila kita ingin memindahkan mana-mana atau folder besar melalui Internet maka lebih baik memampatkan kandungan sebelum memindahkan. Ini menjadikan tugas lebih pantas. Anda boleh menggunakan skrip python untuk memampatkan dan mengekstrak fail atau direktori yang besar. zipfile modul python digunakan untuk melakukan tugas. Cara anda menggunakan python3 untuk memampatkan fail atau direktori ditunjukkan dalam tutorial ini dengan menggunakan pelbagai contoh.

Contoh-1: Memampatkan satu fail

Buat fail baru bernama 'kod pos1.py ' dan tambahkan kod berikut. zipfile modul diimport untuk memampatkan fail. temp.zip ditetapkan sebagai nama fail zip dengan mod tulis dan seterusnya, nama fail asal, temp.txt dan jenis kompres diberikan sebagai parameter dalam kaedah menulis.

import zipfile
zip_file = zipfile.ZipFile (temp.zip ',' w ')
zip_file.tulis ('temp.txt ', compress_type = zipfile.ZIP_DEFLATED)
zip_file.tutup ()

Jalankan skrip

$ python3 kod zip1.py

Saiz temp.txt adalah 27 bait dan selepas pemampatan, ukuran temp.zip adalah 2 bait.

Contoh-2: Memampatkan direktori tertentu

Buat fail baru bernama 'kod zip2.py ' dan tambahkan kod berikut. Direktori mungkin mengandungi banyak fail, folder dan subfolder. Untuk membaca kandungan direktori, os modul python diimport dengan zipfile modul untuk memampatkan direktori. Dalam skrip ini, mydir direktori digunakan untuk pemampatan.

# import modul yang diperlukan
 
import os
import zipfile
 
 
# Menyatakan fungsi untuk mengembalikan semua jalur fail dari direktori tertentu
def retrieve_file_paths (dirName):
 
# pemboleh ubah laluan fail persediaan
filePaths = []
 
# Baca semua direktori, subdirektori dan senarai fail
untuk root, direktori, fail di os.berjalan (dirName):
untuk nama fail dalam fail:
# Buat laluan penuh dengan menggunakan modul os.
filePath = os.jalan.gabung (root, nama fail)
failPaths.tambahkan (filePath)
 
# kembali semua jalan
mengembalikan failPaths
 
 
# Menyatakan fungsi utama
def utama ():
# Tetapkan nama direktori untuk zip
dir_name = 'mydir'
 
# Panggil fungsi untuk mengambil semua fail dan folder dari direktori yang ditetapkan
filePaths = retrieve_file_paths (dir_name)
 
# mencetak senarai semua fail yang akan dizip
cetak ('Senarai fail berikut akan dizip:')
untuk fileName dalam filePaths:
cetak (nama fail)
 
# menulis fail ke zipfile
zip_file = zipfile.ZipFile (dir_name + '.zip ',' w ')
dengan zip_file:
# menulis setiap fail satu persatu
untuk fail dalam filePaths:
zip_file.tulis (fail)
 
cetak (dir_name + '.fail zip berjaya dibuat!')
 
# Panggil fungsi utama
jika __nama__ == "__main__":
utama ()

Jalankan skrip

$ python3 kod zip2.py

Saiz mydir adalah 21 bait dan selepas pemampatan, ukuran mydir.zip adalah 2 bait.

Contoh-3: Memampatkan direktori yang diberikan oleh argumen baris perintah

Buat fail baru bernama 'kod pos3.py ' dan tambahkan kod berikut. Untuk membaca nilai baris perintah, modul python lain sys diimport dengan os dan zipfile modul.

# import modul yang diperlukan
 
import os
import sys
import zipfile
 
# Menyatakan fungsi untuk mengembalikan semua jalur fail dari direktori tertentu
def retrieve_file_paths (dirName):
 
# pemboleh ubah laluan fail persediaan
filePaths = []
 
# Baca semua direktori, subdirektori dan senarai fail
untuk root, direktori, fail di os.berjalan (dirName):
untuk nama fail dalam fail:
# Buat jalan masuk penuh dengan menggunakan modul os.
filePath = os.jalan.gabung (root, nama fail)
failPaths.tambahkan (filePath)
 
# kembali semua jalan
mengembalikan failPaths
 
 
# Menyatakan fungsi utama
def utama ():
 
# Periksa dua argumen yang diberikan pada masa menjalankan skrip
sekiranya len (sys.berhujah) != 2:
cetak ("Anda telah memasukkan nama direktori untuk zip")
sys.jalan keluar (1)
 
# Tetapkan nama direktori dari argumen perintah
dir_name = sys.argv [1]
 
# Tetapkan nama fail zip
zipFileName = dir_name + ".zip "
 
# Panggil fungsi untuk mengambil semua fail dan folder dari direktori yang ditetapkan
filePaths = retrieve_file_paths (dir_name)
 
# mencetak senarai fail yang akan dizip
cetak ('Senarai fail berikut akan dizip:')
untuk fileName dalam filePaths:
cetak (nama fail)
 
# tulis fail dan folder ke zipfile
zip_file = zipfile.ZipFile (zipFileName, 'w')
dengan zip_file:
# tulis setiap fail secara berasingan
untuk fail dalam filePaths:
zip_file.tulis (fail)
 
cetak (zipFileName + 'fail berjaya dibuat!')
 
# Panggil fungsi utama
jika __nama__ == "__main__":
utama ()

Jalankan skrip

$ python3 kod zip3.py

ujian diberikan sebagai nama direktori dalam argumen baris perintah. Saiz ujian adalah 21 bait dan selepas pemampatan, ukuran ujian.zip adalah 2 bait.

Saya harap, tutorial ini dapat membantu anda menggunakan python untuk memampatkan sebarang fail atau direktori.

Kajian Tetikus Tanpa Wayar Microsoft Sculpt Touch
Saya baru-baru ini membaca mengenai Sentuhan Microsoft Sculpt tetikus tanpa wayar dan memutuskan untuk membelinya. Setelah menggunakannya sebentar, sa...
Trackpad dan Mouse Pointer pada skrin Windows AppyMouse untuk Tablet Windows
Pengguna tablet sering kehilangan penunjuk tetikus, terutama ketika mereka biasa menggunakan komputer riba. Telefon pintar dan tablet skrin sentuh dil...
Butang tetikus tengah tidak berfungsi pada Windows 10
The butang tetikus tengah membantu anda menelusuri halaman web dan skrin yang panjang dengan banyak data. Sekiranya ia berhenti, anda akan menggunakan...