Python Tệp ZIP có ví dụ

Python cho phép bạn tạo file zip/tar nhanh chóng.

Lệnh sau sẽ nén toàn bộ thư mục

shutil.make_archive(output_filename, 'zip', dir_name)

Lệnh sau cho phép bạn kiểm soát các tập tin bạn muốn lưu trữ

ZipFile.write(filename)

Dưới đây là các bước để tạo Tệp Zip trong Python

Bước 1) Để tạo một tập tin lưu trữ từ Python, hãy đảm bảo rằng bạn có câu lệnh nhập chính xác và theo thứ tự. Đây là câu lệnh nhập cho kho lưu trữ from shutil import make_archive

Python Tệp ZIP

Giải thích mã

  • Nhập lớp make_archive từ mô-đun shutil
  • Sử dụng chức năng chia nhỏ để tách thư mục và tên file từ đường dẫn đến vị trí của file văn bản (guru99)
  • Sau đó chúng ta gọi mô-đun “shutil.make_archive(“guru99 archive, “zip”, root_dir)” để tạo tệp lưu trữ, tệp này sẽ ở định dạng zip
  • Sau đó, chúng tôi chuyển vào thư mục gốc của những thứ chúng tôi muốn nén lại. Vì vậy mọi thứ trong thư mục sẽ được nén
  • Khi bạn chạy mã, bạn có thể thấy tệp zip lưu trữ được tạo ở phía bên phải của bảng điều khiển.

Bước 2) Sau khi tệp lưu trữ của bạn được tạo, bạn có thể nhấp chuột phải vào tệp và chọn hệ điều hành, nó sẽ hiển thị các tệp lưu trữ của bạn trong đó như hình dưới đây

Python Tệp ZIP

Bây giờ tệp archive.zip của bạn sẽ xuất hiện trên hệ điều hành của bạn (Windows Explorer)

Python Tệp ZIP

Bước 3) Khi bạn nhấp đúp vào tệp, bạn sẽ thấy danh sách tất cả các tệp trong đó.

Python Tệp ZIP

Bước 4) In Python chúng ta có thể kiểm soát tốt hơn đối với archive vì chúng ta có thể xác định file cụ thể nào sẽ được đưa vào archive. Trong trường hợp của chúng ta, chúng ta sẽ đưa hai file vào archive “guru99.txt”“guru99.txt.bak”.

Python Tệp ZIP

Giải thích mã

  • Nhập lớp Zipfile từ tệp zip Python mô-đun. Mô-đun này cung cấp toàn quyền kiểm soát việc tạo tệp zip
  • Chúng tôi tạo một Zipfile mới có tên ( “testguru99.zip, “w”)
  • Tạo lớp Zipfile mới cần phải pass vì là file nên cần ghi thông tin vào file dưới dạng newzip
  • Chúng tôi đã sử dụng biến “newzip” để chỉ tệp zip mà chúng tôi đã tạo
  • Sử dụng hàm write trên biến “newzip”, chúng tôi thêm các tệp “guru99.txt” và “guru99.txt.bak” vào kho lưu trữ

Khi thực thi mã, bạn có thể thấy tệp được tạo ở phía bên phải của bảng điều khiển có tên “guru99.zip”

Chú thích: Ở đây chúng tôi không đưa ra bất kỳ lệnh nào để “đóng” tệp như “newzip.close” vì chúng tôi sử dụng khóa phạm vi “Với”, vì vậy khi chương trình nằm ngoài phạm vi này, tệp sẽ được dọn sạch và tự động đóng.

Bước 5) Khi bạn -> nhấp chuột phải vào tệp (testguru99.zip) và -> chọn hệ điều hành của bạn (Windows Explorer), nó sẽ hiển thị các tập tin lưu trữ trong thư mục như hình dưới đây.

Python Tệp ZIP

Khi bạn nhấp đúp vào tệp “testguru99.zip”, một cửa sổ khác sẽ mở ra và hiển thị các tệp tin có trong đó.

Python Tệp ZIP

Đây là mã hoàn chỉnh

Python 2 Ví dụ

import os
import shutil
from zipfile import ZipFile
from os import path
from shutil import make_archive

def main():
# Check if file exists
	if path.exists("guru99.txt"):
# get the path to the file in the current directory
	src = path.realpath("guru99.txt");
# rename the original file
	os.rename("career.guru99.txt","guru99.txt")
# now put things into a ZIP archive
	root_dir,tail = path.split(src)
    shutil.make_archive("guru99 archive", "zip", root_dir)
# more fine-grained control over ZIP files
	with ZipFile("testguru99.zip","w") as newzip:
	newzip.write("guru99.txt")
	    newzip.write("guru99.txt.bak")
if __name__== "__main__":
	  main()

Python 3 Ví dụ

import os
import shutil
from zipfile import ZipFile
from os import path
from shutil import make_archive

    # Check if file exists
       if path.exists("guru99.txt"):
    # get the path to the file in the current directory
        src = path.realpath("guru99.txt");
    # rename the original file
        os.rename("career.guru99.txt","guru99.txt")
    # now put things into a ZIP archive
        root_dir,tail = path.split(src)
        shutil.make_archive("guru99 archive","zip",root_dir)
    # more fine-grained control over ZIP files
        with ZipFile("testguru99.zip", "w") as newzip:
            newzip.write("guru99.txt")
            newzip.write("guru99.txt.bak")

Tổng kết

  • Để nén toàn bộ thư mục, hãy sử dụng lệnh “shutil.make_archive(“name”,”zip”, root_dir)
  • Để chọn các tập tin cần nén, hãy sử dụng lệnh “ZipFile.write(filename)”