Cách nén một thư mục trong Python

ZIP là một định dạng tệp lưu trữ được sử dụng để nén dữ liệu không mất dữ liệu. Một hoặc nhiều thư mục hoặc tệp được sử dụng để tạo tệp ZIP. ZIP hỗ trợ nhiều thuật toán nén, DEFLATE là thuật toán phổ biến nhất. Tệp ZIP có. zip dưới dạng tiện ích mở rộng. Trong bài viết này, chúng ta sẽ thảo luận về cách tạo tệp Zip bằng Python

Tạo tệp ZIP không nén bằng Python

Các tệp ZIP không nén không làm giảm kích thước của thư mục gốc. Vì không nén nên chia sẻ các tệp ZIP không nén qua mạng không có lợi thế so với chia sẻ tệp gốc

Sử dụng cửa chớp. make_archive để tạo tệp Zip

Python có một thư viện tiêu chuẩn Shutil có thể được sử dụng để tạo các tệp ZIP không nén. Phương pháp tạo tệp ZIP này chỉ nên được sử dụng để sắp xếp nhiều tệp trong một tệp

cú pháp

Sau đây là cú pháp của shutdown. make_archive −

shutil.make_archive[‘output file name’, ‘zip’, ‘directory name’]

Thí dụ

Sau đây là một ví dụ để tạo tệp ZIP bằng cách sử dụng Shutil. make_archive −

đầu ra

Sau đây là đầu ra của đoạn mã trên -

E:\Zipped file.zip

Tạo tệp ZIP nén bằng Python

Các tệp ZIP được nén làm giảm kích thước của thư mục gốc bằng cách áp dụng thuật toán nén. Các tệp ZIP được nén giúp chia sẻ tệp nhanh hơn qua mạng vì kích thước của tệp ZIP nhỏ hơn đáng kể so với tệp gốc

Thư viện zipfile trong python cho phép tạo các tệp ZIP được nén bằng các phương pháp khác nhau

Tạo tệp ZIP từ nhiều tệp

Trong phương pháp này, ZipFile[] tạo một tệp ZIP trong đó các tệp sẽ được nén được thêm vào. Điều này đạt được bằng cách tạo đối tượng của ZipFile bằng cách sử dụng từ khóa và sau đó ghi các tệp bằng cách sử dụng. viết phương pháp

Thí dụ

Sau đây là một ví dụ để tạo tệp ZIP bằng nhiều tệp -

đầu ra

Sau đây là đầu ra của đoạn mã trên -

ZIP file created

Tạo tệp ZIP từ toàn bộ thư mục

Trong phương pháp này, một vòng lặp for được sử dụng để duyệt qua toàn bộ thư mục và sau đó thêm tất cả các tệp có trong thư mục vào tệp ZIP được tạo bằng ZipFile

Thí dụ

Sau đây là một ví dụ để tạo tệp ZIP từ toàn bộ thư mục -

đầu ra

Sau đây là đầu ra của đoạn mã trên -

ZIP file created

Tạo tệp ZIP từ các tệp cụ thể trong một thư mục

Trong phương pháp này, hàm lambda được sử dụng để lọc các tệp có phần mở rộng cụ thể sẽ được thêm vào tệp ZIP. Hàm lambda được truyền dưới dạng tham số cho một hàm trong đó các tệp được lọc dựa trên tiện ích mở rộng

Khi nén toàn bộ thư mục [folder] thành tệp zip trong Python, bạn có thể sử dụng os. scandir[] hoặc os. listdir[] để tạo danh sách các tệp và sử dụng mô-đun zipfile để nén chúng, nhưng sẽ dễ dàng hơn nếu sử dụng make_archive[] của mô-đun Shutil sẽ dễ dàng hơn

Ngoài zip, các định dạng khác như tar cũng được hỗ trợ

Để biết thêm thông tin về cách nén và giải nén tệp zip bằng mô-đun zipfile, vui lòng tham khảo bài viết sau

  • Những bài viết liên quan. zipfile để nén và giải nén các tệp ZIP trong Python

Nén thư mục [folder] thành tệp zip . ______8_______

Đối số đầu tiên, base_name, chỉ định tên của tệp zip sẽ được tạo [không có phần mở rộng] và đối số thứ hai, định dạng, chỉ định định dạng lưu trữ

Có thể chọn các mục sau đây cho định dạng đối số

  • 'zip'
  • 'tar'
  • 'gztar'
  • 'bztar'
  • import shutil
    
    shutil.make_archive['data/temp/new_shutil', 'zip', root_dir='data/temp/dir']
    0

Đối số thứ ba, root_dir, chỉ định đường dẫn của thư mục gốc của thư mục sẽ được nén và đối số thứ tư, base_dir, chỉ định đường dẫn của thư mục được nén so với root_dir. Cả hai đều được đặt thành thư mục hiện tại theo mặc định

Nếu bỏ qua base_dir thì toàn bộ root_dir sẽ bị nén

import shutil

shutil.make_archive['data/temp/new_shutil', 'zip', root_dir='data/temp/dir']
1
Ví dụ: giả sử chúng ta có một thư mục với cấu trúc sau

dir
├── dir_sub
   └── test_sub.txt
└── test.txt
import shutil

shutil.make_archive['data/temp/new_shutil', 'zip', root_dir='data/temp/dir']

new_shutil. zip được nén với các cài đặt trên bỏ qua base_dir sẽ được giải nén như sau

Làm cách nào để ZIP tệp trong Python?

Để nén các tệp riêng lẻ thành một tệp ZIP, tạo một đối tượng ZipFile mới và thêm các tệp bạn muốn nén bằng phương thức write[]. With zipfile. ZipFile[] , specify the path of a newly created ZIP file as the first parameter file , and set the second parameter mode to 'w' [write].

Làm cách nào để nén tệp trong Python?

Để tạo các tệp ZIP nén của riêng bạn, bạn phải mở đối tượng ZipFile ở chế độ ghi bằng cách chuyển 'w' làm đối số thứ hai . Khi bạn chuyển một đường dẫn tới phương thức write[] của đối tượng ZipFile, Python sẽ nén tệp tại đường dẫn đó và thêm nó vào tệp ZIP.

Chủ Đề