Xử lý tệp nén ZIP trong Python bằng thư viện zipfile

Xử lý tệp nén ZIP trong Python bằng thư viện zipfile

Việc xử lý các tệp nén ZIP trong Python là một yêu cầu phổ biến. Thư viện `zipfile` của Python cung cấp nhiều tính năng mạnh mẽ để tạo, đọc, ghi và trích xuất các tệp ZIP. Dù bạn cần nén nhiều tệp để tiết kiệm không gian lưu trữ hay trích xuất các tệp cụ thể từ gói nén, `zipfile` đều có thể đáp ứng nhu cầu của bạn.

### Cài đặt và nhập thư viện

Đầu tiên, bạn cần đảm bảo đã cài đặt môi trường Python. Vì `zipfile` được tích hợp sẵn trong thư viện chuẩn của Python, bạn không cần cài đặt thêm bất kỳ thư viện nào khác.

Trong tập lệnh Python của mình, bạn chỉ cần nhập module như sau:

import zipfile


### Tạo tệp ZIP

Để tạo một tệp ZIP, bạn có thể sử dụng phương thức `write()` của lớp `ZipFile` để thêm từng tệp vào gói nén hoặc thêm nhiều tệp cùng lúc.

Dưới đây là một ví dụ đơn giản về cách tạo một tệp ZIP chứa nhiều tệp:

import zipfile

Tạo một tệp ZIP mới

with zipfile.ZipFile('archive.zip', 'w') as zip_obj:

Thêm từng tệp vào gói nén

files_to_add = ['document1.txt', 'document2.txt', 'image.png'] for file in files_to_add: zip_obj.write(file) print("Tệp ZIP đã được tạo thành công!")


Trong ví dụ này, chúng ta sử dụng `with` để mở tệp ZIP và dùng `write()` để thêm các tệp vào gói nén.

### Đọc tệp ZIP

Khi đọc một tệp ZIP, bạn có thể xem nội dung của gói nén hoặc trích xuất các tệp bên trong. Dưới đây là cách liệt kê tất cả các tệp trong tệp ZIP và cách trích xuất một tệp duy nhất.

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

import zipfile

Mở tệp ZIP hiện có

with zipfile.ZipFile('archive.zip', 'r') as zip_obj:

Liệt kê tất cả các tệp trong tệp ZIP

print("Danh sách các tệp trong ZIP:") for item in zip_obj.namelist(): print(item)


Trích xuất một tệp duy nhất:

import zipfile

Mở tệp ZIP hiện có

with zipfile.ZipFile('archive.zip', 'r') as zip_obj:

Trích xuất một tệp cụ thể

zip_obj.extract('document1.txt', 'output_folder/') print("Tệp đã được trích xuất thành công!")


Ở đây, chúng ta sử dụng `namelist()` để lấy danh sách các tệp trong tệp ZIP và `extract()` để trích xuất một tệp riêng lẻ ra thư mục đã chỉ định.

### Trích xuất tất cả các tệp

Nếu bạn muốn trích xuất tất cả các tệp trong tệp ZIP cùng lúc, bạn có thể sử dụng phương thức `extractall()`.

import zipfile

Mở tệp ZIP hiện có

with zipfile.ZipFile('archive.zip', 'r') as zip_obj:

Trích xuất tất cả các tệp vào thư mục hiện tại

zip_obj.extractall() print("Tất cả các tệp đã được trích xuất thành công!")


Phương thức này rất tiện lợi khi bạn cần giải nén toàn bộ tệp ZIP nhanh chóng.

### Sử dụng nâng cao

Bên cạnh các chức năng cơ bản về nén và giải nén, mô-đun `zipfile` còn hỗ trợ một số tính năng nâng cao như thiết lập mức độ nén và bảo vệ bằng mật khẩu.

Thiết lập mức độ nén:

import zipfile

Tạo một tệp ZIP mới với mức độ nén cao nhất (9)

with zipfile.ZipFile('high_compression.zip', 'w', zipfile.ZIP_DEFLATED) as zip_obj: zip_obj.write('large_file.txt') print("Tệp ZIP với mức độ nén cao đã được tạo thành công!")


Bảo vệ tệp ZIP bằng mật khẩu:

import zipfile

Tạo một tệp ZIP được bảo vệ bằng mật khẩu

with zipfile.ZipFile('secure_archive.zip', 'w') as zip_obj: zip_obj.setpassword(b'super_secure_password') zip_obj.write('confidential_data.txt') print("Tệp ZIP được bảo vệ bằng mật khẩu đã được tạo thành công!")


Với các tính năng nâng cao này, bạn có thể điều chỉnh hiệu suất và tính bảo mật của tệp ZIP theo nhu cầu cụ thể của mình.

Thẻ: python zipfile file-compression

Đăng vào ngày 11 tháng 7 lúc 16:58