Tiết lộ. Bài đăng này có thể chứa các liên kết liên kết, nghĩa là khi bạn nhấp vào liên kết và mua hàng, chúng tôi sẽ nhận được hoa hồng
Tệp nén là một loại tệp lưu trữ chứa một hoặc nhiều tệp đã được giảm kích thước. Nén tệp trong các hệ điều hành hiện đại thường khá đơn giản. Tuy nhiên, trong hướng dẫn này, bạn sẽ học cách nén và giải nén tệp bằng ngôn ngữ lập trình Python
Bạn có thể hỏi, tại sao tôi lại học cách nén các tệp bằng Python khi đã có sẵn các công cụ được cung cấp? . Ví dụ: khi tải xuống bộ dữ liệu máy học mà bạn muốn tải xuống một đoạn mã, hãy giải nén và tải chúng vào bộ nhớ tự động
Bạn cũng có thể muốn thêm tính năng nén/giải nén trong ứng dụng của mình hoặc bạn có hàng nghìn tệp nén và bạn muốn giải nén chúng chỉ bằng một cú nhấp chuột, hướng dẫn này có thể giúp ích cho bạn
Có liên quan. Cách mã hóa và giải mã tệp bằng Python
Hãy bắt đầu, chúng tôi sẽ sử dụng mô-đun tích hợp tarfile, vì vậy chúng tôi không phải cài đặt bất cứ thứ gì, bạn có thể tùy chọn cài đặt tqdm chỉ để in thanh tiến trình
pip3 install tqdm
Mở một tệp Python mới và
import tarfile
from tqdm import tqdm # pip3 install tqdm
Nén
Hãy bắt đầu bằng cách nén, chức năng sau chịu trách nhiệm nén tệp/thư mục hoặc danh sách tệp/thư mục
def compress[tar_file, members]:
"""
Adds files [`members`] to a tar_file and compress it
"""
# open file for gzip compressed writing
tar = tarfile.open[tar_file, mode="w:gz"]
# with progress bar
# set the progress bar
progress = tqdm[members]
for member in progress:
# add file/folder/link to the tar file [compress]
tar.add[member]
# set the progress description of the progress bar
progress.set_description[f"Compressing {member}"]
# close the file
tar.close[]
Tôi đã gọi những tệp/thư mục này là thành viên, dù sao thì đó cũng là những gì tài liệu gọi chúng
Trước tiên, chúng tôi đã mở và tạo một tệp tar mới để ghi được nén bằng gzip [đó là tệp mode='w. gz' là viết tắt của], sau đó cho từng thành viên, thêm nó vào kho lưu trữ và cuối cùng đóng tệp tar
Tôi đã tùy chọn bọc các thành viên bằng tqdm để in các thanh tiến trình, điều này sẽ hữu ích khi nén nhiều tệp trong một lần
Vậy là xong phần nén, bây giờ chúng ta đi sâu vào phần giải nén
học cũng được. Cách nén tệp PDF bằng Python
Giảm bớt sức ép
Chức năng dưới đây là để giải nén một tệp lưu trữ nhất định
def decompress[tar_file, path, members=None]:
"""
Extracts `tar_file` and puts the `members` to `path`.
If members is None, all members on `tar_file` will be extracted.
"""
tar = tarfile.open[tar_file, mode="r:gz"]
if members is None:
members = tar.getmembers[]
# with progress bar
# set the progress bar
progress = tqdm[members]
for member in progress:
tar.extract[member, path=path]
# set the progress description of the progress bar
progress.set_description[f"Extracting {member.name}"]
# or use this
# tar.extractall[members=members, path=path]
# close the file
tar.close[]
Đầu tiên, chúng tôi mở tệp lưu trữ dưới dạng đọc với nén gzip. Sau đó, tôi đã tạo một tham số tùy chọn 'thành viên' trong trường hợp chúng tôi muốn trích xuất các tệp cụ thể [không phải tất cả các kho lưu trữ], nếu 'thành viên' không được chỉ định, chúng tôi sẽ lấy tất cả các tệp trong kho lưu trữ bằng phương thức getmembers[] trả về
Và sau đó, đối với mỗi thành viên, hãy giải nén nó bằng phương thức extract[] để trích xuất một thành viên từ kho lưu trữ vào thư mục 'đường dẫn' mà chúng tôi đã chỉ định
Lưu ý rằng chúng ta có thể sử dụng cách khác extractall[] cho điều đó [được ưu tiên trong tài liệu chính thức]
Hãy kiểm tra điều này
compress["compressed.tar.gz", ["test.txt", "folder"]]
Điều này sẽ nén bài kiểm tra. txt và thư mục trong thư mục hiện tại sang tệp lưu trữ tar mới có tên là nén. hắc ín. gz như thể hiện trong hình ví dụ sau
Nếu bạn muốn giải nén
decompress["compressed.tar.gz", "extracted"]
Thao tác này sẽ giải nén tệp lưu trữ trước đó mà chúng tôi vừa nén vào một thư mục mới có tên là giải nén
Được rồi, chúng tôi đã hoàn thành. Bạn có thể sáng tạo với điều này, đây là một số ý tưởng
Trong hướng dẫn này, chúng ta đã khám phá quá trình nén và giải nén bằng mô-đun tarfile, bạn cũng có thể sử dụng mô-đun zipfile để làm việc với kho lưu trữ ZIP, mô-đun bz2 để nén bzip2, mô-đun gzip hoặc zlib cho các tệp gzip
Tài nguyên & Khóa học
Cuối cùng, nếu bạn là người mới bắt đầu và muốn học Python, tôi khuyên bạn nên tham gia khóa học Python For Everyone Coursera, trong đó bạn sẽ học được nhiều điều về Python, chúc may mắn