Nén tệp bằng Python

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

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

Để nén một tệp hiện có vào kho lưu trữ gzip, hãy đọc văn bản trong đó và chuyển đổi nó thành một mảng phụ . Đối tượng bytearray này sau đó được ghi vào tệp gzip. Trong ví dụ dưới đây, 'zen. txt' được cho là có trong thư mục hiện tại.

Nén trong Python là gì?

Nén[]. Trình lặp này chọn một cách có chọn lọc các giá trị để in từ vùng chứa đã truyền theo giá trị danh sách boolean được truyền dưới dạng các đối số khác . Các đối số tương ứng với boolean true được in nếu không thì tất cả đều bị bỏ qua. Trong phần này, chúng tôi đưa ra hai tham số cho hàm.

Tôi có thể giảm kích thước tệp bằng zip không?

Bạn có thể nén hoặc nén tệp trong Windows, thao tác này sẽ thu nhỏ kích thước của tệp nhưng vẫn giữ được chất lượng ban đầu của bản trình bày . Bạn cũng có thể nén các tệp phương tiện trong bản trình bày để chúng có kích thước tệp nhỏ hơn và dễ gửi hơn.

Làm thế nào để gzip một tập tin?

Cách cơ bản nhất để sử dụng gzip để nén tệp là gõ. .
% gzip tên tệp. .
% gzip -d tên tệp. gz hoặc % tên tệp gunzip. gz. .
% tar -cvf lưu trữ. tar foo bar dir/.
% tar -xvf lưu trữ. hắc ín. .
% tar -tvf lưu trữ. hắc ín. .
% tar -czvf kho lưu trữ. hắc ín. gz file1 file2 dir/.
% tar -xzvf kho lưu trữ. hắc ín. gz. .
% tar -tzvf kho lưu trữ. hắc ín. gz

Chủ Đề