Tệp zip tệp zip trong python là gì?

Định dạng ZIP thường được sử dụng làm tệp lưu trữ cũng như định dạng nén được hỗ trợ trên tất cả các nền tảng. Các tệp có thể được nén mà không làm mất bất kỳ dữ liệu nào. Python có hỗ trợ tích hợp cho các tệp ZIP

Trong bài viết này, chúng ta sẽ tìm hiểu cách đọc, ghi, trích xuất và liệt kê các tệp ZIP trong Python

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

Mô-đun zipfile trong Python, một phần của thư viện tích hợp, có thể được sử dụng để thao tác với các tệp ZIP. Bạn nên làm việc với trình xử lý tệp bên trong trình quản lý ngữ cảnh vì nó xử lý việc đóng con trỏ tệp

Để đọc tệp ZIP, trước tiên chúng tôi tạo một thể hiện của lớp

As table:
File Name                                    Modified                       Size
data/                                        2022-04-24 19:00:16            0
data/assets/                                 2022-04-24 19:00:24            0
data/assets/index.txt                        2022-04-24 19:01:12           11
data/configurations.txt                      2022-04-24 18:52:26            0
data/sample.txt                              2022-04-24 18:52:16            0

As list:
['data/', 'data/assets/', 'data/assets/index.txt', 'data/configurations.txt', 'data/sample.txt']

As list of objects:
[, , , , ]
1 và sử dụng các phương thức sau để lấy thông tin tệp

import zipfile

with zipfile.ZipFile["./data.zip"] as zip:
    print["As table:"]
    print[zip.printdir[]] # display files and folders in tabular format
    print["\nAs list:"]
    print[zip.namelist[]] # list of files and folders
    print["\nAs list of objects:"]
    print[zip.infolist[]] # get files as ZipInfo objects

đầu ra

As table:
File Name                                    Modified                       Size
data/                                        2022-04-24 19:00:16            0
data/assets/                                 2022-04-24 19:00:24            0
data/assets/index.txt                        2022-04-24 19:01:12           11
data/configurations.txt                      2022-04-24 18:52:26            0
data/sample.txt                              2022-04-24 18:52:16            0

As list:
['data/', 'data/assets/', 'data/assets/index.txt', 'data/configurations.txt', 'data/sample.txt']

As list of objects:
[, , , , ]

Đọc các tệp cụ thể từ ZIP¶

Sau khi tệp ZIP được đọc, hãy sử dụng phương pháp

As table:
File Name                                    Modified                       Size
data/                                        2022-04-24 19:00:16            0
data/assets/                                 2022-04-24 19:00:24            0
data/assets/index.txt                        2022-04-24 19:01:12           11
data/configurations.txt                      2022-04-24 18:52:26            0
data/sample.txt                              2022-04-24 18:52:16            0

As list:
['data/', 'data/assets/', 'data/assets/index.txt', 'data/configurations.txt', 'data/sample.txt']

As list of objects:
[, , , , ]
2 để đọc một tệp cụ thể

import zipfile

with zipfile.ZipFile["./data.zip"] as zip:
    with zip.open["data/assets/index.txt"] as fp:
        print[fp.read[].decode[]]

đầu ra

hello-world

Thêm tệp vào ZIP¶

Để thêm tệp, trước tiên chúng tôi mở tệp ZIP ở chế độ chắp thêm. Điều quan trọng là không mở nó ở chế độ ghi vì sau đó toàn bộ ZIP sẽ bị ghi đè

"Tệp zip" không là gì ngoài một tệp định dạng nén duy nhất chứa một hoặc nhiều tệp nén. Tệp zip trong Python là sự kết hợp giữa nén dữ liệu trong đó không làm mất dữ liệu và mã hóa dữ liệu. Phần mở rộng của tệp zip là. khóa kéo. Các tệp zip còn được gọi là kho lưu trữ ZIP. Chúng tôi thường thực hiện nén các tệp có kích thước lớn để dữ liệu có thể được lưu trữ trong vùng lưu trữ ít hơn mà không làm mất dữ liệu thực tế. Tệp zip Python đảm bảo tính toàn vẹn của dữ liệu;

Phạm vi

Bài viết bao gồm các chủ đề như

  • Giới thiệu về file zip trong Python cùng với nhu cầu sử dụng file zip trong Python
  • Làm cách nào chúng ta có thể truy cập, tạo, trích xuất, đọc và ghi vào tệp zip trong Python?
  • Ưu điểm của việc sử dụng tệp zip trong Python

Mỗi chủ đề được giải thích rõ ràng bằng sơ đồ và ví dụ bất cứ khi nào cần thiết

Tệp Zip là gì?

Tệp zip trong Python hoặc bất kỳ nơi nào khác không là gì ngoài định dạng lưu trữ có thể tương tác của tệp thường được sử dụng để nén và lưu trữ tệp. Phần mở rộng của tệp zip là. khóa kéo. Các tệp zip còn được gọi là kho lưu trữ ZIP

Chúng tôi thường thực hiện nén các tệp có kích thước lớn [nói chung] để dữ liệu có thể được lưu trữ trong vùng lưu trữ nhỏ hơn mà không làm mất dữ liệu thực tế. Tệp zip không là gì ngoài một tệp định dạng nén duy nhất chứa một hoặc nhiều tệp nén

Tệp zip trong Python là sự kết hợp giữa nén dữ liệu trong đó không làm mất dữ liệu và mã hóa dữ liệu

Ghi chú

  • Tệp zip lần đầu tiên được tạo và triển khai bởi PKWARE. PKWARE hiện đang duy trì các thông số kỹ thuật của tệp zip. Định dạng tệp zip có sẵn công khai để sử dụng
  • Bên cạnh định dạng nén zip, chúng tôi cũng có tệp TAR và tệp RAR làm điều tương tự

Trước khi tìm hiểu cách nén tệp dưới dạng tệp zip trong Python và cách làm việc với tệp zip trong Python. Trước tiên chúng ta hãy tìm hiểu nhu cầu sử dụng tệp zip trong Python

  • Tệp zip trong Python có thể được sử dụng để giảm yêu cầu lưu trữ cao
  • Như chúng ta biết rằng tệp có kích thước nhỏ hơn có thể được truyền nhanh hơn tệp có kích thước lớn. Vì vậy, chúng tôi có thể nén tệp bằng Python để chuyển nhanh hơn
  • Định dạng tệp zip được sử dụng rộng rãi trong ngành và nó là tiêu chuẩn ngành để lưu trữ và nén dữ liệu kỹ thuật số
  • Làm việc và thao tác với file zip trong Python là một trong những kỹ năng quan trọng của kỹ sư DevOps, vì vậy chúng ta nên tìm hiểu về file zip trong Python

Bây giờ để làm việc với tệp zip trong Python, chúng tôi có một mô-đun có tên là mô-đun zipfile, đây là mô-đun tiêu chuẩn được xây dựng để thao tác với tệp zip trong Python. Mô-đun zipfile là mô-đun cấp cao được xây dựng đặc biệt để đọc, tạo, trích xuất và thao tác với tệp zip trong Python

Làm cách nào để truy cập tệp Zip trong Python?

Giả sử chúng ta có một tệp zip có tên myFiles. zip và chúng tôi muốn truy cập tất cả các tệp nén của myFiles. tập tin zip. Vì vậy, để truy cập các tệp, trước tiên chúng tôi cần nhập mô-đun zipfile, sau đó sử dụng chức năng zip của mô-đun zipfile. extractall[], chúng ta có thể trích xuất các tệp của tệp zip tương ứng bằng Python

Hãy để chúng tôi mã hóa những điều đã thảo luận để rõ ràng hơn

# importing the zipfile module
from zipfile import ZipFile

# specifying the zip file name from our storage
zippedFileName = "myFiles.zip"

# opening the zip file in reading mode.
with ZipFile[zippedFileName, 'r'] as zip:
    # extracting all the files contained inside the zip file
    print['Extracting all the files!']
    zip.extractall[]
    print['Extraction done!']

đầu ra

Extracting all the files!
Extraction done!

Ưu điểm của việc sử dụng tệp Zip

Vì chúng tôi đã hiểu rõ về tệp zip trong Python. Bây giờ chúng ta hãy tìm hiểu những lợi thế của việc sử dụng tệp zip trong Python

  • Tệp zip trong Python có thể được trao đổi dễ dàng trên các nền tảng
  • Tệp zip trong Python giúp chúng tôi kết hợp hoặc đóng gói một số tệp có liên quan thành một tệp có thể truyền được
  • Tệp zip được nén sao cho trong quá trình nén và giải nén không bị mất dữ liệu
  • Tệp zip Python chiếm ít dung lượng lưu trữ hơn và giúp chúng tôi tiết kiệm dung lượng ổ đĩa trong bộ nhớ
  • Các tệp zip giúp chúng tôi nén, mã hóa và tổng hợp các tệp thành một tệp duy nhất có kích thước nhỏ hơn để chúng có thể dễ dàng chuyển từ hệ thống này sang hệ thống khác
  • Tệp zip Python đảm bảo tính toàn vẹn của dữ liệu và do đó không có thay đổi ngẫu nhiên hoặc độc hại nào trong dữ liệu của chúng tôi
  • Tệp zip trong Python có thể được chuyển nhanh hơn các định dạng tệp khác

Làm cách nào để tạo tệp Zip bằng Python?

Trước đây chúng ta đã thấy cách chúng ta có thể truy cập các tệp có trong tệp zip bằng Python. Bây giờ chúng ta hãy tìm hiểu cách chúng ta có thể tạo kho lưu trữ zip của tệp hoặc thư mục trong Python

Chúng ta có thể sử dụng mô-đun Python sẵn có khác là mô-đun os để duyệt qua các tệp có trong thư mục và trong quá trình đi bộ, chúng tôi có thể thêm đệ quy các tệp cần thiết để nén

Hãy để chúng tôi mã hóa những điều đã thảo luận để rõ ràng hơn

# importing the zipfile module and os module
import os
import zipfile


def zipDirectory[path, zippedFileName]:
    # traversing over all the files in a directory
    for folderName, subfolders, filenames in os.walk[path]:
        for file in filenames:
            # adding the current file to be zipped
            zippedFileName.write[os.path.join[folderName, file]]

    print["Zipped the files!"]


# calling the constructor to create an object of the ZipFile class.
zippedFileName = zipfile.ZipFile['myFiles.zip', 'w', zipfile.ZIP_DEFLATED]

# calling the zipDirectory function by passing the path of the current directory and zipped file name.
zipDirectory['./testFolder', zippedFileName]
zippedFileName.close[]

đầu ra

Trong đoạn mã trên, chúng tôi đang gọi một hàm cụ thể là zipDirectory có hai tham số là - đường dẫn của thư mục làm việc và đối tượng Tệp Zip. Hàm lặp lại các tệp, thư mục con và thư mục và nén chúng vào một tệp bằng cách sử dụng phương thức write[]

Sử dụng chức năng zip của mô-đun zipfile. extractall[], chúng ta có thể trích xuất các tệp của tệp zip tương ứng bằng Python

# importing the zipfile module
from zipfile import ZipFile

# specifying the zip file name from our storage
zippedFileName = "myFiles.zip"

# opening the zip file in reading mode.
with ZipFile[zippedFileName, 'r'] as zip:
    # extracting all the files contained inside the zip file
    print['Extracting all the files!']
    zip.extractall[]
    print['Extraction done!']

đầu ra

Extracting all the files!
Extraction done!

Chúng ta có thể thấy rằng thư mục làm việc của chúng ta sẽ chứa các tệp được giải nén của tệp zip sau khi chương trình được thực hiện thành công

Trong chương trình trên, trước tiên chúng tôi đã nhập lớp ZipFile từ mô-đun zipfile được sử dụng để đọc và ghi tệp zip trong Python. Sau đó, chúng tôi đã tạo một đối tượng của ZipFile bằng cách gọi hàm tạo và chuyển tên tệp của chúng tôi cũng như chế độ đọc của tệp

Vì vậy, chúng tôi đã chuyển tên tệp của mình và chế độ đọc làm tham số của hàm tạo, chúng tôi cũng đã đặt tên cho đối tượng của ZipFile là nén. Cuối cùng, chúng tôi đã sử dụng phương thức có tên extractall[] để giải nén tất cả các tệp có trong myFiles. khóa kéo

Cách ghi vào tệp Zip bằng Python?

Ghi vào một zip có nghĩa là thêm một tệp/thư mục bổ sung vào một zip hiện có. Ý tưởng ghi vào tệp zip rất đơn giản, trước tiên chúng tôi sẽ giải nén tất cả các tệp trong thư mục và thư mục con cần được nén. Sau khi đưa tất cả các tệp của một thư mục cụ thể vào một danh sách hoặc bộ dữ liệu, chúng tôi sẽ gọi một hàm sẽ nén tất cả các tệp có trong danh sách

Hãy để chúng tôi mã hóa những điều đã thảo luận để rõ ràng hơn

# importing the zipfile module and os module
from zipfile import ZipFile
import os

# a function that will return the list of files to be zipped.
def getFilesList[directory]:
    # a list that will contain all the files to be zipped
    fileLists = []

    # traversing the directory to get the files.
    for root, directories, files in os.walk[directory]:
        for filename in files:
            # joining the strings to get the file name.
            filepath = os.path.join[root, filename]
            fileLists.append[filepath]

    # returning the list of all files.
    return fileLists


if __name__ == "__main__":
    # path of the folder that needs to be zipped.
    directory = './testFolder'

    # calling function to get all file paths in the directory
    fileLists = getFilesList[directory]

    # writing files to a zipfile
    with ZipFile['myZippedFile.zip', 'w'] as zip:
        # writing each file one after the other.
        for file in fileLists:
            zip.write[file]

    print['Files are zipped successfully!']

đầu ra

As table:
File Name                                    Modified                       Size
data/                                        2022-04-24 19:00:16            0
data/assets/                                 2022-04-24 19:00:24            0
data/assets/index.txt                        2022-04-24 19:01:12           11
data/configurations.txt                      2022-04-24 18:52:26            0
data/sample.txt                              2022-04-24 18:52:16            0

As list:
['data/', 'data/assets/', 'data/assets/index.txt', 'data/configurations.txt', 'data/sample.txt']

As list of objects:
[, , , , ]
0

Tìm hiểu thêm về tệp Zip trong Python

Cho đến nay chúng ta đã thảo luận rất nhiều về tệp zip trong Python. Chúng tôi đã thảo luận rằng tệp zip là một tệp định dạng nén duy nhất chứa một hoặc nhiều tệp nén. Chúng tôi thường thực hiện nén các tệp có kích thước lớn để dữ liệu có thể được lưu trữ trong vùng lưu trữ ít hơn mà không làm mất dữ liệu thực tế

Ý nghĩa của tệp zip là gì?

Tệp nén [nén] chiếm ít dung lượng lưu trữ hơn và có thể được chuyển sang máy tính khác nhanh hơn so với tệp không nén . Trong Windows, bạn làm việc với các tệp và thư mục nén giống như cách bạn làm việc với các tệp và thư mục không nén.

Làm cách nào để tạo tệp zip Python?

Tạo kho lưu trữ zip từ nhiều tệp bằng Python .
Tạo một đối tượng ZipFile bằng cách chuyển tên và chế độ tệp mới thành 'w' [chế độ ghi]. Nó sẽ tạo một tệp zip mới và mở nó trong đối tượng ZipFile
Gọi hàm write[] trên đối tượng ZipFile để thêm các tệp trong đó
gọi close[] trên đối tượng ZipFile để đóng tệp zip

Làm cách nào để cài đặt tệp zip trong Python?

Để biết thêm thông tin, hãy xem Python Setuptools. .
Tải xuống tệp zip pynrfjprog
Giải nén tệp zip đã nén và mở cửa sổ Dấu nhắc Lệnh trong thư mục đó
Nhập thiết lập python. py cài đặt tại Dấu nhắc Lệnh. Nội dung của gói sẽ được thêm vào thư mục mặc định của Python

ZIP và giải nén trong Python là gì?

Ví dụ 1. Giải nén tất cả các tệp có trong zip . Create a zip file object using ZipFile class. Gọi phương thức extractall[] trên đối tượng tệp zip và chuyển đường dẫn nơi các tệp cần được giải nén và Giải nén tệp cụ thể có trong tệp zip. Python3.

Chủ Đề