Tệp ZIP Python là gì?

Định dạng ZIP thường được sử dụng làm tệp lưu trữ cũng như định dạng nén được hỗ trợ trên tất cả các nền tảng. Các tệp có thể được nén mà không làm mất bất kỳ dữ liệu nào. Python có hỗ trợ tích hợp cho các tệp ZIP

#hơn

Trong bài viết này, chúng ta sẽ tìm hiểu cách đọc, ghi, trích xuất và liệt kê các tệp ZIP trong Python

Liệt kê nội dung tệp ZIP

Mô-đun zipfile trong Python, một phần của thư viện tích hợp, có thể được sử dụng để thao tác với các tệp ZIP. Bạn nên làm việc với trình xử lý tệp bên trong trình quản lý ngữ cảnh vì nó xử lý việc đóng con trỏ tệp

Để đọc tệp ZIP, trước tiên chúng tôi tạo một thể hiện của lớp ZipFile và sử dụng các phương thức sau để lấy thông tin tệp

import zipfile

with zipfile.ZipFile("./data.zip") as zip:
    print("As table:")
    print(zip.printdir()) # display files and folders in tabular format
    print("\nAs list:")
    print(zip.namelist()) # list of files and folders
    print("\nAs list of objects:")
    print(zip.infolist()) # get files as ZipInfo objects

đầu ra

As table:
File Name                                    Modified                       Size
data/                                        2022-04-24 19:00:16            0
data/assets/                                 2022-04-24 19:00:24            0
data/assets/index.txt                        2022-04-24 19:01:12           11
data/configurations.txt                      2022-04-24 18:52:26            0
data/sample.txt                              2022-04-24 18:52:16            0

As list:
['data/', 'data/assets/', 'data/assets/index.txt', 'data/configurations.txt', 'data/sample.txt']

As list of objects:
[<ZipInfo filename='data/' external_attr=0x10>, <ZipInfo filename='data/assets/' external_attr=0x10>, <ZipInfo filename='data/assets/index.txt' compress_type=deflate external_attr=0x20 file_size=11 compress_size=13>, <ZipInfo filename='data/configurations.txt' external_attr=0x20 file_size=0>, <ZipInfo filename='data/sample.txt' external_attr=0x20 file_size=0>]

Đọc các tệp cụ thể từ ZIP

Sau khi tệp ZIP được đọc, hãy sử dụng phương pháp open() để đọc một tệp cụ thể

import zipfile

with zipfile.ZipFile("./data.zip") as zip:
    with zip.open("data/assets/index.txt") as fp:
        print(fp.read().decode())

đầu ra

hello-world

Thêm tệp vào ZIP

Để thêm tệp, trước tiên chúng tôi mở tệp ZIP ở chế độ chắp thêm. Điều quan trọng là không mở nó ở chế độ ghi vì sau đó toàn bộ ZIP sẽ bị ghi đè

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

Python zip hoạt động như thế nào?

Hàm zip() của Python chấp nhận các mục có thể lặp lại và hợp nhất chúng thành một bộ duy nhất. Giá trị kết quả là một đối tượng zip lưu trữ các cặp lặp. Bạn có thể chuyển danh sách, bộ dữ liệu, bộ hoặc từ điển thông qua hàm zip(). Python có một số chức năng tích hợp cho phép lập trình viên lặp qua dữ liệu

Mục đích của tệp zip là gì?

Tệp nén (nén) chiếm ít dung lượng lưu trữ hơn và có thể được chuyển sang máy tính khác nhanh hơn so với tệp không nén . Trong Windows, bạn làm việc với các tệp và thư mục nén giống như cách bạn làm việc với các tệp và thư mục không nén.