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

Trong bài đăng này, chúng ta sẽ tìm hiểu cách ZIP tệp bằng Python, cách giải nén tệp từ tệp ZIP hoặc cách in nội dung của tệp ZIP bằng Python. Trước đó, hãy nói về tệp ZIP

Tệp ZIP là gì?

Tệp ZIP là tệp lưu trữ hỗ trợ nén dữ liệu không mất dữ liệu. Nó có thể chứa một số tệp và thư mục hoặc các tệp ZIP được nén khác trong đó. Định dạng này cho phép một số thuật toán nén, mặc dù DEFLATE là phổ biến nhất. Vì vậy, về cơ bản, tệp ZIP được sử dụng để nén một số tệp và thư mục lớn thành một tệp lưu trữ nhỏ hơn. Do đó, có một số phần mềm có sẵn để tạo tệp ZIP hoặc trích xuất nội dung từ tệp ZIP

Tương tự, Python cũng có một số mô-đun để làm việc với các tệp ZIP hoặc để tạo chúng hoặc trích xuất dữ liệu từ chúng, chẳng hạn như zipfile, zipimport, Shutil, v.v.

Ở đây trong bài đăng này, chúng tôi sẽ sử dụng mô-đun zipfile, Shutil. Dưới dạng zipfile, Shutil là các mô-đun Python sẵn có. Vì vậy, bạn sẽ không cần phải cài đặt chúng bên ngoài

Tạo tệp ZIP bằng cách sử dụng shutdown
# importing shutil module
import shutil

#using make_archive method to zip a whole directory
shutil.make_archive[output_filename, 'zip', dir_name]

phương thức make_archive[]

Nó yêu cầu ba đối số để tạo tệp ZIP

  1. base_name - tên của tệp đầu ra, bạn muốn tạo
  2. định dạng - định dạng của tệp lưu trữ. Chẳng hạn như zip, tar, gztar, bztar, xztar, v.v.
  3. root_dir hoặc base_dir - root_dir là thư mục sẽ là thư mục gốc của kho lưu trữ hoặc base_dir là thư mục nơi chúng tôi bắt đầu lưu trữ từ đó

Hãy nói về mô-đun zipfile trong Python

mô-đun zipfile cung cấp các công cụ để tạo, đọc, ghi, nối thêm và liệt kê tệp ZIP. Bất kỳ việc sử dụng nâng cao nào của mô-đun này sẽ yêu cầu hiểu biết về định dạng. Mô-đun này hiện không xử lý các tệp ZIP nhiều đĩa. Nó có thể xử lý các tệp ZIP sử dụng phần mở rộng ZIP64 [tức là các tệp ZIP có kích thước lớn hơn 4 GiB]. Nó hỗ trợ giải mã các tệp được mã hóa trong kho lưu trữ ZIP, nhưng hiện tại nó không thể tạo tệp được mã hóa. Quá trình giải mã cực kỳ chậm vì nó được triển khai bằng Python gốc chứ không phải C

Tạo tệp ZIP bằng zipfile
# importing ZipFile class from zipfile module
from zipfile import ZipFile

# more fine-grained control over ZIP files
with ZipFile["file_name.zip", "w"] as newzip:
    newzip.write["file.txt"]
    newzip.write["file2.jpg"]

viết phương pháp

Nó yêu cầu một đối số để tạo tệp ZIP

  1. tên tệp - nhập tên của tệp bạn muốn thêm vào tệp ZIP

Bên cạnh việc tạo tệp ZIP, chúng tôi cũng có thể trích xuất hoặc hiển thị nội dung từ tệp ZIP

Làm cách nào để trích xuất nội dung từ tệp ZIP?
# importing ZipFile class from zipfile module
from zipfile import ZipFile

# specifying the zip file_name
file = "file_name.zip"

# opening the zip file in READ mode
with ZipFile[file, 'r'] as zip:
    # extracting all contents
    print['Extracting all the files now...']
    zip.extractall[]
    print['Done!']

phương thức giải nén []

phương thức extractall[] sẽ trích xuất tất cả nội dung của tệp zip vào thư mục làm việc hiện tại

Làm cách nào để in nội dung từ tệp ZIP?
# importing ZipFile class from zipfile module
from zipfile import ZipFile

# specifying the zip file_name
file = "file_name.zip"

# opening the zip file in READ mode
with ZipFile[file, 'r'] as zip:
    # printing all the contents of a zip file 
    zip.printdir[]

phương thức printdir[]

Phương thức printdir[] sẽ in tất cả nội dung của tệp zip

Có một số phương pháp cần thiết khác được sử dụng từ mô-đun zipfile. Hãy cùng tìm hiểu về chúng

  1. zipfile. is_zipfile[FILE_NAME] - phương thức is_zipfile[] được sử dụng để kiểm tra xem một tệp có phải là tệp ZIP hợp lệ hay không dựa trên số ma thuật của nó, nếu không sẽ trả về Sai. tên tệp cũng có thể là tệp hoặc đối tượng giống như tệp

Ví dụ

# importing zipfile module
import zipfile

# specifying the zip file_name
file = "file_name.zip"

# using the is_zipfile method
print[zipfile.is_zipfile[file]]
  1. Tệp Zip. Phương thức close[] close[] của lớp ZipFile được sử dụng để đóng tệp lưu trữ. Vì vậy, hồ sơ thiết yếu đó sẽ không được viết. Như chúng ta đã sử dụng câu lệnh with trong các ví dụ trước, câu lệnh này sẽ tự động đóng tệp lưu trữ sau khi kết thúc câu lệnh with

Ví dụ

# importing ZipFile class from zipfile module
from zipfile import ZipFile

# closing the zip file
ZipFile.close[]
  1. Tệp Zip. namelist[] namelist[] phương thức của lớp ZipFile trả về một danh sách các thành viên lưu trữ theo tên

Ví dụ -

# importing ZipFile class from zipfile module
from zipfile import ZipFile

# specifying the zip file_name
file = "file_name.zip"

# opening the zip file in READ mode
with ZipFile[file, 'r'] as zip:
    # to get archive members
    print[zip.namelist[]]
  1. Tệp Zip. setpassword[PWD] Phương thức setpassword[] được sử dụng để đặt mật khẩu được sử dụng để mã hóa tệp zip, để giải nén nó

Ví dụ

# importing ZipFile class from zipfile module
from zipfile import ZipFile

# specifying the zip file_name
file = "file_name.zip"

# opening the zip file in READ mode
with ZipFile[file, 'r'] as zip:
    # setting the pwd to extract files
    zip.setpassword["ganofins"]
    # extracting all contents
    zip.extractall[]
    print['Done!']
  1. Tệp Zip. infolist[] phương thức infolist[] được sử dụng để trả về một danh sách chứa đối tượng ZipInfo cho từng thành viên của kho lưu trữ. Các đối tượng có cùng thứ tự với các mục nhập của chúng trong tệp ZIP thực trên đĩa nếu một kho lưu trữ hiện có được mở

Ví dụ

________số 8
  1. Tệp Zip. Phương thức getinfo[NAME] getinfo[] được sử dụng để trả về một đối tượng ZipInfo với thông tin về tên thành viên kho lưu trữ

Ví dụ

# importing ZipFile class from zipfile module
from zipfile import ZipFile

# specifying the zip file_name
file = "file_name.zip"

# opening the zip file in READ mode
with ZipFile[file, 'r'] as zip:
    # to get a list containing a ZipInfo object
    print[zip.getinfo["test"]]

Chà, tôi hy vọng bạn hiểu bạn để giải nén các tệp bằng Python. Nếu bạn có bất kỳ câu hỏi nào liên quan đến vấn đề này, vui lòng hỏi chúng tôi trong phần thảo luận bên dưới

Với bài viết này tại OpenGenus, bạn phải có ý tưởng hoàn chỉnh về cách tạo tệp ZIP bằng Python và xử lý nó. Vui thích

Chủ Đề