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