Python Tệp ZIP có ví dụ

⚡ Tóm tắt thông minh

Python Tạo các tệp lưu trữ ZIP bằng các mô-đun shutil và zipfile tích hợp sẵn. Tại đây, bạn sẽ học cách nén toàn bộ thư mục bằng make_archive(), nén các tệp cụ thể bằng ZipFile, và ví dụ:tracLiệt kê và đọc nội dung lưu trữ.

  • 🗜️ make_archive(): shutil.make_archive() nén toàn bộ thư mục thành một tệp .zip.
  • 📄 ZipFile.write(): ZipFile.write() thêm từng tệp cụ thể vào kho lưu trữ một cách tuần tự.
  • 📂 extraccao(): ZipFile.extracHàm tall() giải nén mọi tập tin từ một tệp lưu trữ vào một thư mục.
  • 📋 namelist(): ZipFile.namelist() liệt kê tên các tệp bên trong một tệp lưu trữ ZIP.
  • 🤖 Hỗ trợ từ AI: Các công cụ AI như Copilot tạo mã zip và mã giải nén ngay lập tức.

Python Tệp ZIP

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)

Cách nén toàn bộ thư mục trong tệp ZIP Python

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

Code Giải thích

  • 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

Cách nén các tập tin cụ thể bằng ZipFile

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

Code Giải thích

  • 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”

Lưu ý: Ở đâ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

Hoàn thành Python Code Để tạo 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")

Cách giải thíchtract (Giải nén) một tập tin ZIP trong Python

Để giải nén một tệp lưu trữ, hãy mở nó ở chế độ đọc bằng ZipFile và gọi ví dụ như sau:tractall() thành extracmọi tập tin, hoặc ví dụtract() để rút ra một thành viên duy nhất.

from zipfile import ZipFile

with ZipFile("testguru99.zip", "r") as myzip:
    myzip.extractall("extracted_files")

Người tình cũtracPhương thức tall() ghi tất cả các tệp đã được lưu trữ vào thư mục mà bạn truyền vào làm đối số.

Cách liệt kê các tệp trong tệp ZIP Archive

Bạn có thể kiểm tra kho lưu trữ mà không cần extracNó. Phương thức namelist() trả về tên của mọi tệp được lưu trữ bên trong tệp ZIP.

from zipfile import ZipFile

with ZipFile("testguru99.zip", "r") as myzip:
    print(myzip.namelist())

Lệnh này sẽ in ra danh sách tên các tập tin có trong kho lưu trữ.

Cách đọc một tập tin bên trong tệp ZIP Archive

Bạn có thể đọc trực tiếp tệp thành viên từ tệp lưu trữ mà không cần giải nén.ping sao chép nó ra đĩa bằng phương thức open() của lớp ZipFile.

from zipfile import ZipFile

with ZipFile("testguru99.zip", "r") as myzip:
    with myzip.open("guru99.txt") as f:
        print(f.read())

Điều này rất hữu ích khi bạn chỉ cần nội dung của một tập tin duy nhất từ ​​một kho lưu trữ lớn.

Câu Hỏi Thường Gặp

Sử dụng shutil.make_archive(name, 'zip', root_dir) để nén một thư mục, hoặc mở một ZipFile ở chế độ ghi và gọi write() để thêm các tệp cụ thể vào kho lưu trữ.

shutil.make_archive() nén toàn bộ thư mục chỉ trong một lần gọi, trong khi zipfile.ZipFile cung cấp khả năng kiểm soát chi tiết hơn, cho phép bạn thêm, đọc hoặc xóa dữ liệu.traccác tệp riêng lẻ trong kho lưu trữ.

Mở tệp lưu trữ bằng ZipFile('file.zip', 'r') và gọi ví dụtractall('folder') to extractất cả mọi thứ, hoặc ví dụtract('name') để trích xuất một tệp tin duy nhất từ ​​kho lưu trữ.

Mở tệp Zip ở chế độ đọc và gọi hàm namelist(), hàm này sẽ trả về danh sách tất cả tên tệp được lưu trữ trong tệp lưu trữ mà không có phần mở rộng.tracKhông có cái nào trong số đó cả.

Câu lệnh `with` tự động đóng tệp lưu trữ khi khối lệnh kết thúc, ngay cả khi xảy ra lỗi, vì vậy bạn không cần phải gọi hàm `close()` theo cách thủ công.

Các trợ lý AI như GitHub Copilot tự động hoàn thành các lệnh ZipFile và make_archive(), và tạo ra các vòng lặp để nén hoặc giải nén nhiều tệp từ mô tả bằng ngôn ngữ thông thường.

Đúng vậy. Các công cụ hỗ trợ bởi trí tuệ nhân tạo có thể tự động viết các tập lệnh sao lưu và lưu trữ, lựa chọn giữa shutil và zipfile, và thêm chức năng xử lý lỗi cho các tập tin bị thiếu hoặc các tệp lưu trữ bị hỏng.

Đúng vậy. Mở tệp Zip, sau đó sử dụng phương thức open() của nó trên một tệp thành viên để đọc trực tiếp nội dung của tệp đó, mà không cần...tracsao lưu toàn bộ kho lưu trữ vào đĩa.

Tóm tắt bài viết này với: