Hướng dẫn python compress file to zip - python nén tệp thành zip

Tôi mới đến Python. Yêu cầu của tôi là zip (với nén) tất cả các tệp từ thư mục nguồn đến thư mục đích. Tôi đã sử dụng mã sau từ StackOverflow.

import zipfile, os
locfile = "D:\Python\Dir_dir\Dir_dir\ABC.txt"
loczip = "D:\Python\Dir_dir\Dir_dir2\ABC_TEST.zip"
zip = zipfile.ZipFile (loczip, "w")
zip.write (locfile)
zip.close()

Nó đang tạo một tệp zip nhưng nó chứa toàn bộ cấu trúc thư mục được kế thừa. Ngoại trừ ổ đĩa (d:/) phần còn lại của cấu trúc được thêm vào zip. Có vẻ như sau: "D: \ Python \ dir_dir \ dir_dir2 \ abc_test.zip \ python \ dir_dir \ dir_dir \ abc.txt"

Trong khi tôi muốn: "D: \ Python \ dir_dir \ dir_dir2 \ abc_test.zip \ abc.txt"

Ngoài ra nó không được nén.

Hướng dẫn python compress file to zip - python nén tệp thành zip

Tootone

7.0115 Huy hiệu vàng33 Huy hiệu bạc59 Huy hiệu Đồng5 gold badges33 silver badges59 bronze badges

Hỏi ngày 22 tháng 8 năm 2014 lúc 14:05Aug 22, 2014 at 14:05

3

Để bật nén, chỉ định phương thức nén trong hàm tạo:

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)

Tôi nghĩ rằng bạn đang yêu cầu xóa các đường dẫn tương đối của các tệp bên trong tệp zip. Nếu bạn thực sự muốn điều đó, bạn có thể viết:

zip.write(locfile, os.path.basename(locfile))

Tuy nhiên, đây có lẽ là một ý tưởng tồi, vì việc xóa tất cả thông tin đường dẫn sẽ dẫn đến xung đột đặt tên nếu bạn tăng hai tệp có cùng tên.

Đã trả lời ngày 22 tháng 8 năm 2014 lúc 14:25Aug 22, 2014 at 14:25

snowcrash09snowcrash09snowcrash09

4.63226 Huy hiệu bạc44 Huy hiệu đồng26 silver badges44 bronze badges

5

Kiểm tra tài liệu chính thức và nó giải quyết rõ ràng các vấn đề của bạn.

ZipFile.write(filename, arcname=None, compress_type=None)

nén phải là một trong những hằng số được xác định, ví dụ: zip_deflated

Lưu ý rằng bạn cũng có thể chỉ định loại conMpression trên hàm tạo và nó sẽ áp dụng cho tất cả các tệp được thêm vào kho lưu trữ zip.

Tài liệu cũng bao gồm ghi chú này: Tên lưu trữ phải liên quan đến gốc lưu trữ, nghĩa là chúng không nên bắt đầu với một bộ phân cách đường dẫn.

Ngoài ra, nếu bạn chỉ đơn giản nhập Python Zipfile vào bất kỳ công cụ tìm kiếm nào, bạn sẽ thấy tài liệu chính thức là một trong những liên kết đầu tiên.python zipfile into any search engine, you would have seen the official documentation as one of the first links.

Đã trả lời ngày 22 tháng 8 năm 2014 lúc 14:31Aug 22, 2014 at 14:31

Hướng dẫn python compress file to zip - python nén tệp thành zip

Gary Walkergary WalkerGary Walker

8.4552 Huy hiệu vàng18 Huy hiệu bạc40 Huy hiệu đồng2 gold badges18 silver badges40 bronze badges

Mã nguồn: lib/zipfile.py Lib/zipfile.py


Định dạng tệp ZIP là một tiêu chuẩn lưu trữ và nén phổ biến. Mô -đun này cung cấp các công cụ để tạo, đọc, ghi, nối và liệt kê một tệp zip. Bất kỳ việc sử dụng nâng cao của mô -đun này sẽ yêu cầu sự hiểu biết về định dạng, như được định nghĩa trong ứng dụng PKZIP Lưu ý.

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 các tiện ích mở rộng zip64 (đó là các tệp zip có kích thước cao 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 một tệp được mã hóa. Giải mã cực kỳ chậm vì nó được thực hiện trong Python bản địa chứ không phải C.

Mô -đun xác định các mục sau:

Exceptionzipfile.badzipfile¶zipfile.BadZipFile

Lỗi được nêu ra cho các tệp zip xấu.

Mới trong phiên bản 3.2.

Exceptionzipfile.badzipfile¶ zipfile.BadZipfile

Bí danh của

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
3, để tương thích với các phiên bản Python cũ hơn.

Không dùng nữa kể từ phiên bản 3.2.

Exceptionzipfile.largezipfile¶zipfile.LargeZipFile

Lỗi được nêu ra khi tệp zip yêu cầu chức năng zip64 nhưng điều đó chưa được bật.

classzipfile.ZipFile zipfile.ZipFile

Lớp để đọc và viết các tập tin zip. Xem phần đối tượng Zipfile để biết chi tiết về hàm tạo.ZipFile Objects for constructor details.

classzipfile.Pathzipfile.Path

Một trình bao bọc tương thích pathlib cho các tệp zip. Xem phần đối tượng đường dẫn để biết chi tiết.Path Objects for details.

Mới trong phiên bản 3.8.

classzipfile.PyZipFilezipfile.PyZipFile

Lớp để tạo tài liệu lưu trữ zip có chứa các thư viện Python.

classzipfile.zipinfo (fileName = 'noname', date_time = (1980,1,0,0,0,0)) ¶ zipfile.ZipInfo(filename='NoName', date_time=(1980, 1, 1, 0, 0, 0))

Lớp được sử dụng để đại diện cho thông tin về một thành viên của một kho lưu trữ. Các trường hợp của lớp này được trả về bởi các phương thức

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
4 và
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
5 của các đối tượng
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
6. Hầu hết người dùng của mô -đun
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
7 sẽ không cần phải tạo các mô -đun này, mà chỉ sử dụng những người được tạo bởi mô -đun này. Tên tệp phải là tên đầy đủ của thành viên lưu trữ và Date_Time phải là một bộ chứa sáu trường mô tả thời gian sửa đổi cuối cùng của tệp; Các trường được mô tả trong phần đối tượng Zipinfo.ZipInfo Objects.

zipfile.is_zipfile (tên tệp) ¶is_zipfile(filename)

Trả về

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
8 Nếu FileName là tệp zip hợp lệ dựa trên số phép thuật của nó, nếu không, sẽ trả về
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
9. Tên tệp có thể là một đối tượng giống như tệp hoặc tệp.

Đã thay đổi trong phiên bản 3.1: Hỗ trợ cho các đối tượng giống như tệp và tệp.Support for file and file-like objects.

zipfile.zip_stored¶ZIP_STORED

Hằng số số cho một thành viên lưu trữ không nén.

zipfile.zip_deflated¶ZIP_DEFLATED

Hằng số số cho phương pháp nén zip thông thường. Điều này đòi hỏi mô -đun

zip.write(locfile, os.path.basename(locfile))
0.

zipfile.zip_bzip2¶ZIP_BZIP2

Hằng số số cho phương pháp nén BZIP2. Điều này yêu cầu mô -đun

zip.write(locfile, os.path.basename(locfile))
1.

Mới trong phiên bản 3.3.

zipfile.zip_lzma¶ZIP_LZMA

Hằng số số cho phương pháp nén LZMA. Điều này yêu cầu mô -đun

zip.write(locfile, os.path.basename(locfile))
2.

Mới trong phiên bản 3.3.

zipfile.zip_lzma¶

Hằng số số cho phương pháp nén LZMA. Điều này yêu cầu mô -đun

zip.write(locfile, os.path.basename(locfile))
2.

Ghi chú

Thông số kỹ thuật định dạng tệp ZIP đã bao gồm hỗ trợ nén BZIP2 kể từ năm 2001 và để nén LZMA từ năm 2006. Tuy nhiên, một số công cụ (bao gồm các bản phát hành Python cũ hơn) không hỗ trợ các phương thức nén này và có thể từ chối xử lý tệp ZIP hoàn toàn hoặc hoặc Không trích xuất các tệp riêng lẻ.

Xem thêm

Ghi chú ứng dụng PKZIP

Tài liệu về định dạng tệp zip của Phil Katz, người tạo định dạng và thuật toán được sử dụng.

Trang chủ thông tin-Zip

Thông tin về các chương trình lưu trữ và thư viện phát triển dự án thông tin-ZIP.zipfile.ZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, compresslevel=None, *, strict_timestamps=True, metadata_encoding=None)

Đối tượng Zipfilepath-like object.

classzipfile.zipfile (file, mode = 'r', nén = zip_stored, allowzip64 = true

Nén là phương pháp nén zip để sử dụng khi viết kho lưu trữ và phải là

ZipFile.write(filename, arcname=None, compress_type=None)
4,
ZipFile.write(filename, arcname=None, compress_type=None)
5,
ZipFile.write(filename, arcname=None, compress_type=None)
6 hoặc
ZipFile.write(filename, arcname=None, compress_type=None)
7; Các giá trị không được công nhận sẽ khiến
ZipFile.write(filename, arcname=None, compress_type=None)
8 được nâng lên. Nếu
ZipFile.write(filename, arcname=None, compress_type=None)
5,
ZipFile.write(filename, arcname=None, compress_type=None)
6 hoặc
ZipFile.write(filename, arcname=None, compress_type=None)
7 được chỉ định nhưng mô -đun tương ứng (
zip.write(locfile, os.path.basename(locfile))
0,
zip.write(locfile, os.path.basename(locfile))
1 hoặc
zip.write(locfile, os.path.basename(locfile))
2) không có sẵn,
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
5 được nâng lên. Mặc định là
ZipFile.write(filename, arcname=None, compress_type=None)
4.

Nếu ZipFile cho phép là

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
8 (mặc định) sẽ tạo các tệp zip sử dụng các tiện ích mở rộng zip64 khi zipfile lớn hơn 4 GIB. Nếu đó là
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
8
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
7 sẽ tăng một ngoại lệ khi tệp zip sẽ yêu cầu tiện ích mở rộng zip64.

Tham số nén kiểm soát mức nén để sử dụng khi ghi tệp vào kho lưu trữ. Khi sử dụng

ZipFile.write(filename, arcname=None, compress_type=None)
4 hoặc
ZipFile.write(filename, arcname=None, compress_type=None)
7, nó không có tác dụng. Khi sử dụng số nguyên
ZipFile.write(filename, arcname=None, compress_type=None)
5
with ZipFile('spam.zip') as myzip:
    with myzip.open('eggs.txt') as myfile:
        print(myfile.read())
3 đến
with ZipFile('spam.zip') as myzip:
    with myzip.open('eggs.txt') as myfile:
        print(myfile.read())
4 được chấp nhận (xem
zip.write(locfile, os.path.basename(locfile))
0 để biết thêm thông tin). Khi sử dụng số nguyên
ZipFile.write(filename, arcname=None, compress_type=None)
6
with ZipFile('spam.zip') as myzip:
    with myzip.open('eggs.txt') as myfile:
        print(myfile.read())
7 đến
with ZipFile('spam.zip') as myzip:
    with myzip.open('eggs.txt') as myfile:
        print(myfile.read())
4 được chấp nhận (xem
zip.write(locfile, os.path.basename(locfile))
1 để biết thêm thông tin).

Đối số StricT_Timestamp, khi được đặt thành

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
9, cho phép zip các tệp cũ hơn 1980-01-01 với chi phí đặt dấu thời gian thành 1980-01-01. Hành vi tương tự xảy ra với các tệp mới hơn 2107-12-31, dấu thời gian cũng được đặt ở giới hạn.

Khi chế độ là

zip.write(locfile, os.path.basename(locfile))
3, metadata_encoding có thể được đặt thành tên của một codec, sẽ được sử dụng để giải mã siêu dữ liệu như tên của các thành viên và nhận xét zip.

Nếu tệp được tạo bằng chế độ

zip.write(locfile, os.path.basename(locfile))
4,
zip.write(locfile, os.path.basename(locfile))
6 hoặc
zip.write(locfile, os.path.basename(locfile))
5 và sau đó
>>> Path(...).joinpath('child').joinpath('grandchild')
>>> Path(...).joinpath('child', 'grandchild')
>>> Path(...) / 'child' / 'grandchild'
5 mà không cần thêm bất kỳ tệp nào vào kho lưu trữ, các cấu trúc zip thích hợp cho kho lưu trữ trống sẽ được ghi vào tệp.

ZipFile cũng là một người quản lý bối cảnh và do đó hỗ trợ câu lệnh

>>> Path(...).joinpath('child').joinpath('grandchild')
>>> Path(...).joinpath('child', 'grandchild')
>>> Path(...) / 'child' / 'grandchild'
6. Trong ví dụ, Myzip bị đóng sau khi bộ câu lệnh
>>> Path(...).joinpath('child').joinpath('grandchild')
>>> Path(...).joinpath('child', 'grandchild')
>>> Path(...) / 'child' / 'grandchild'
6 đã hoàn thành, ngay cả khi một ngoại lệ xảy ra:

with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')

Ghi chú

Metadata_encoding là một cài đặt toàn thể cho zipfile. Hiện tại không thể thiết lập điều này trên cơ sở mỗi thành viên.

Thuộc tính này là một cách giải quyết cho các triển khai kế thừa tạo ra tài liệu lưu trữ với tên trong trang mã hóa hoặc mã hiện tại (chủ yếu là trên Windows). Theo tiêu chuẩn .zip, việc mã hóa siêu dữ liệu có thể được chỉ định là trang mã IBM (mặc định) hoặc UTF-8 bằng cờ trong tiêu đề lưu trữ. Cờ đó được ưu tiên hơn metadata_encoding, đây là phần mở rộng cụ thể của Python.

Mới trong phiên bản 3.2: Đã thêm khả năng sử dụng

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
6 làm trình quản lý ngữ cảnh.Added the ability to use
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
6 as a context manager.

Đã thay đổi trong phiên bản 3.3: Đã thêm hỗ trợ cho nén

>>> Path(...).joinpath('child').joinpath('grandchild')
>>> Path(...).joinpath('child', 'grandchild')
>>> Path(...) / 'child' / 'grandchild'
9 và
zip.write(locfile, os.path.basename(locfile))
2.Added support for
>>> Path(...).joinpath('child').joinpath('grandchild')
>>> Path(...).joinpath('child', 'grandchild')
>>> Path(...) / 'child' / 'grandchild'
9 and
zip.write(locfile, os.path.basename(locfile))
2 compression.

Đã thay đổi trong phiên bản 3.4: Tiện ích mở rộng ZIP64 được bật theo mặc định.ZIP64 extensions are enabled by default.

Đã thay đổi trong phiên bản 3.5: Đã thêm hỗ trợ để viết vào các luồng không thể nhìn thấy. Đã thêm hỗ trợ cho chế độ

zip.write(locfile, os.path.basename(locfile))
6.Added support for writing to unseekable streams. Added support for the
zip.write(locfile, os.path.basename(locfile))
6 mode.

Đã thay đổi trong phiên bản 3.6: Trước đây, một

with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
5 đơn giản đã được nâng lên cho các giá trị nén không được công nhận.Previously, a plain
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
5 was raised for unrecognized compression values.

Đã thay đổi trong phiên bản 3.6.2: Tham số tệp chấp nhận một đối tượng giống như đường dẫn.The file parameter accepts a path-like object.

Đã thay đổi trong phiên bản 3.7: Thêm tham số nén.Add the compresslevel parameter.

Mới trong Phiên bản 3.8: Đối số chỉ từ khóa của Strict_TimestampsThe strict_timestamps keyword-only argument

Đã thay đổi trong phiên bản 3.11: Đã thêm hỗ trợ để chỉ định mã hóa tên thành viên để đọc siêu dữ liệu trong thư mục và tiêu đề tệp Zipfile.Added support for specifying member name encoding for reading metadata in the zipfile’s directory and file headers.

Zipfile.close ()close()

Đóng tệp lưu trữ. Bạn phải gọi

>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
3 trước khi thoát khỏi chương trình hoặc hồ sơ cần thiết của bạn sẽ không được viết.

Zipfile.getInfo (tên) ¶getinfo(name)

Trả về một đối tượng

>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4 với thông tin về tên thành viên lưu trữ. Gọi
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
4 cho một tên hiện không có trong kho lưu trữ sẽ tăng
>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
6.

Zipfile.infast () ¶infolist()

Trả về một danh sách chứa một đối tượng

>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4 cho mỗi thành viên của kho lưu trữ. Các đối tượng theo thứ tự giống như các mục của chúng trong tệp zip thực tế trên đĩa nếu một kho lưu trữ hiện có được mở.

Zipfile.namelist ()namelist()

Trả lại một danh sách các thành viên lưu trữ theo tên.

Zipfile.open (name, mode = 'r', pwd = none, *, force_zip64 = false)open(name, mode='r', pwd=None, *, force_zip64=False)

Truy cập một thành viên của kho lưu trữ dưới dạng đối tượng giống như tệp nhị phân. Tên có thể là tên của một tệp trong kho lưu trữ hoặc đối tượng

>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4. Tham số chế độ, nếu được bao gồm, phải là
zip.write(locfile, os.path.basename(locfile))
3 (mặc định) hoặc
zip.write(locfile, os.path.basename(locfile))
4. NKT là mật khẩu được sử dụng để giải mã các tệp zip được mã hóa.

string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
1 cũng là người quản lý bối cảnh và do đó hỗ trợ tuyên bố
>>> Path(...).joinpath('child').joinpath('grandchild')
>>> Path(...).joinpath('child', 'grandchild')
>>> Path(...) / 'child' / 'grandchild'
6:

with ZipFile('spam.zip') as myzip:
    with myzip.open('eggs.txt') as myfile:
        print(myfile.read())

Với chế độ

zip.write(locfile, os.path.basename(locfile))
3 đối tượng giống như tệp (
string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
4) chỉ đọc và cung cấp các phương pháp sau:
string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
5,
string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
6,
string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
7,
string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
8,
string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
9,
$ python -m zipfile -c monty.zip spam.txt eggs.txt
0,
$ python -m zipfile -c monty.zip spam.txt eggs.txt
1. Các đối tượng này có thể hoạt động độc lập với zipfile.

Với

$ python -m zipfile -c monty.zip spam.txt eggs.txt
2, một tay cầm tệp có thể ghi được trả về, hỗ trợ phương thức
$ python -m zipfile -c monty.zip spam.txt eggs.txt
3. Mặc dù xử lý tệp có thể ghi được mở, việc cố gắng đọc hoặc ghi các tệp khác trong tệp zip sẽ tăng
$ python -m zipfile -c monty.zip spam.txt eggs.txt
4.

Khi viết một tệp, nếu kích thước tệp không được biết trước nhưng có thể vượt quá 2 Gib, hãy vượt qua

$ python -m zipfile -c monty.zip spam.txt eggs.txt
5 để đảm bảo định dạng tiêu đề có khả năng hỗ trợ các tệp lớn. Nếu kích thước tệp được biết trước, hãy xây dựng một đối tượng
>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4 với bộ
$ python -m zipfile -c monty.zip spam.txt eggs.txt
7 và sử dụng nó làm tham số tên.

Ghi chú

Các phương thức

string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
1,
string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
5 và
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
00 có thể lấy tên tệp hoặc đối tượng
>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4. Bạn sẽ đánh giá cao điều này khi cố gắng đọc một tệp zip có chứa các thành viên có tên trùng lặp.

Đã thay đổi trong phiên bản 3.6:

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
02 hiện có thể được sử dụng để ghi các tệp vào kho lưu trữ với tùy chọn
$ python -m zipfile -c monty.zip spam.txt eggs.txt
2.
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
02 can now be used to write files into the archive with the
$ python -m zipfile -c monty.zip spam.txt eggs.txt
2 option.

Đã thay đổi trong phiên bản 3.6: Gọi

string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
1 trên Zipfile đóng sẽ tăng
$ python -m zipfile -c monty.zip spam.txt eggs.txt
4. Trước đây, một
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
5 đã được nâng lên.Calling
string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
1 on a closed ZipFile will raise a
$ python -m zipfile -c monty.zip spam.txt eggs.txt
4. Previously, a
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
5 was raised.

Trích xuất một thành viên từ kho lưu trữ đến thư mục làm việc hiện tại; Thành viên phải là tên đầy đủ của nó hoặc đối tượng

>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4. Thông tin tệp của nó được trích xuất chính xác nhất có thể. Đường dẫn chỉ định một thư mục khác nhau để trích xuất. Thành viên có thể là một tên tệp hoặc đối tượng
>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4. NKT là mật khẩu được sử dụng cho các tệp được mã hóa.

Trả về đường dẫn được chuẩn hóa được tạo (một thư mục hoặc tệp mới).

Ghi chú

Các phương thức

string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
1,
string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
5 và
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
00 có thể lấy tên tệp hoặc đối tượng
>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4. Bạn sẽ đánh giá cao điều này khi cố gắng đọc một tệp zip có chứa các thành viên có tên trùng lặp.

Đã thay đổi trong phiên bản 3.6:

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
02 hiện có thể được sử dụng để ghi các tệp vào kho lưu trữ với tùy chọn
$ python -m zipfile -c monty.zip spam.txt eggs.txt
2.Calling
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
00 on a closed ZipFile will raise a
$ python -m zipfile -c monty.zip spam.txt eggs.txt
4. Previously, a
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
5 was raised.

Đã thay đổi trong phiên bản 3.6: Gọi

string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
1 trên Zipfile đóng sẽ tăng
$ python -m zipfile -c monty.zip spam.txt eggs.txt
4. Trước đây, một
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
5 đã được nâng lên.The path parameter accepts a path-like object.

Trích xuất một thành viên từ kho lưu trữ đến thư mục làm việc hiện tại; Thành viên phải là tên đầy đủ của nó hoặc đối tượng

>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4. Thông tin tệp của nó được trích xuất chính xác nhất có thể. Đường dẫn chỉ định một thư mục khác nhau để trích xuất. Thành viên có thể là một tên tệp hoặc đối tượng
>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4. NKT là mật khẩu được sử dụng cho các tệp được mã hóa.

Trả về đường dẫn được chuẩn hóa được tạo (một thư mục hoặc tệp mới).

Nếu một tên tệp thành viên là một đường dẫn tuyệt đối, thì ổ đĩa Drive/UNC SharePoint và Dẫn (trở lại) sẽ bị tước, ví dụ:

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
09 trở thành
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
10 trên UNIX và
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
11 trở thành
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
12 trên Windows. Và tất cả các thành phần
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
13 trong tên tệp thành viên sẽ bị xóa, ví dụ:
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
14 trở thành
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
15. Trên các ký tự bất hợp pháp của Windows (
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
16,
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
17,
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
18,
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
19,
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
20,
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
21 và
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
22) được thay thế bằng dấu gạch dưới (
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
23).

Đã thay đổi trong phiên bản 3.6: Gọi

string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
1 trên Zipfile đóng sẽ tăng
$ python -m zipfile -c monty.zip spam.txt eggs.txt
4. Trước đây, một
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
5 đã được nâng lên.The path parameter accepts a path-like object.

Trích xuất một thành viên từ kho lưu trữ đến thư mục làm việc hiện tại; Thành viên phải là tên đầy đủ của nó hoặc đối tượng
>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4. Thông tin tệp của nó được trích xuất chính xác nhất có thể. Đường dẫn chỉ định một thư mục khác nhau để trích xuất. Thành viên có thể là một tên tệp hoặc đối tượng
>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4. NKT là mật khẩu được sử dụng cho các tệp được mã hóa.
printdir()

Trả về đường dẫn được chuẩn hóa được tạo (một thư mục hoặc tệp mới).

Nếu một tên tệp thành viên là một đường dẫn tuyệt đối, thì ổ đĩa Drive/UNC SharePoint và Dẫn (trở lại) sẽ bị tước, ví dụ:
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
09 trở thành
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
10 trên UNIX và
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
11 trở thành
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
12 trên Windows. Và tất cả các thành phần
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
13 trong tên tệp thành viên sẽ bị xóa, ví dụ:
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
14 trở thành
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
15. Trên các ký tự bất hợp pháp của Windows (
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
16,
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
17,
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
18,
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
19,
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
20,
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
21 và
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
22) được thay thế bằng dấu gạch dưới (
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
23).
setpassword(pwd)

Đã thay đổi trong phiên bản 3.6: Gọi

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
00 trên Zipfile đóng sẽ tăng
$ python -m zipfile -c monty.zip spam.txt eggs.txt
4. Trước đây, một
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
5 đã được nâng lên.

Thay đổi trong phiên bản 3.6.2: Tham số đường dẫn chấp nhận một đối tượng giống như đường dẫn.read(name, pwd=None)

Trích xuất tất cả các thành viên từ kho lưu trữ đến thư mục làm việc hiện tại. Đường dẫn chỉ định một thư mục khác nhau để trích xuất. Các thành viên là tùy chọn và phải là một tập hợp con của danh sách được trả về bởi

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
27. NKT là mật khẩu được sử dụng cho các tệp được mã hóa.

Cảnh báoCalling

string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
5 on a closed ZipFile will raise a
$ python -m zipfile -c monty.zip spam.txt eggs.txt
4. Previously, a
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
5 was raised.

Không bao giờ trích xuất tài liệu lưu trữ từ các nguồn không tin cậy mà không kiểm tra trước. Có thể các tệp được tạo bên ngoài đường dẫn, ví dụ: Các thành viên có tên tệp tuyệt đối bắt đầu bằng
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
28 hoặc tên tệp với hai dấu chấm
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
13. Mô -đun này cố gắng ngăn chặn điều đó. Xem lưu ý
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
00.
testzip()

Zipfile.printdir () ¶

In một bảng nội dung cho kho lưu trữ đến

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
31.Calling
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
44 on a closed ZipFile will raise a
$ python -m zipfile -c monty.zip spam.txt eggs.txt
4. Previously, a
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
5 was raised.

Zipfile.setPassword (pwd) ¶write(filename, arcname=None, compress_type=None, compresslevel=None)

Đặt PWD làm mật khẩu mặc định để trích xuất các tệp được mã hóa.

Ghi chú

Zipfile.read (tên, pwd = none) ¶

Ghi chú

Trả về các byte của tên tệp trong kho lưu trữ. Tên là tên của tệp trong kho lưu trữ hoặc đối tượng

>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4. Lưu trữ phải được mở để đọc hoặc nối. PWD là mật khẩu được sử dụng cho các tệp được mã hóa và, nếu được chỉ định, nó sẽ ghi đè mật khẩu mặc định được đặt với
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
33. Gọi
string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile
5 trên ZipFile sử dụng phương thức nén khác với
ZipFile.write(filename, arcname=None, compress_type=None)
4,
ZipFile.write(filename, arcname=None, compress_type=None)
5,
ZipFile.write(filename, arcname=None, compress_type=None)
6 hoặc
ZipFile.write(filename, arcname=None, compress_type=None)
7 sẽ tăng
ZipFile.write(filename, arcname=None, compress_type=None)
8. Một lỗi cũng sẽ được nêu ra nếu mô -đun nén tương ứng không có sẵn.

Ghi chú

Nếu

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
50 (hoặc
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
51, nếu
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
50 không được đưa ra) chứa một byte null, tên của tệp trong kho lưu trữ sẽ bị cắt ở byte null.

Ghi chú

Một dấu gạch chéo hàng đầu trong tên tệp có thể dẫn đến việc lưu trữ không thể mở trong một số chương trình zip trên các hệ thống Windows.

Đã thay đổi trong phiên bản 3.6: Gọi

$ python -m zipfile -c monty.zip spam.txt eggs.txt
3 trên zipfile được tạo với chế độ
zip.write(locfile, os.path.basename(locfile))
3 hoặc zipfile đóng sẽ tăng
$ python -m zipfile -c monty.zip spam.txt eggs.txt
4. Trước đây, một
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
5 đã được nâng lên.Calling
$ python -m zipfile -c monty.zip spam.txt eggs.txt
3 on a ZipFile created with mode
zip.write(locfile, os.path.basename(locfile))
3 or a closed ZipFile will raise a
$ python -m zipfile -c monty.zip spam.txt eggs.txt
4. Previously, a
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
5 was raised.

Zipfile.writeStrwritestr(zinfo_or_arcname, data, compress_type=None, compresslevel=None)

Viết một tập tin vào kho lưu trữ. Nội dung là dữ liệu, có thể là một thể hiện

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
57 hoặc
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
58; Nếu đó là
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
57, nó được mã hóa dưới dạng UTF-8 trước. zinfo_or_arcname là tên tệp mà nó sẽ được đưa ra trong kho lưu trữ hoặc một thể hiện
>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4. Nếu nó là một ví dụ, ít nhất là tên tệp, ngày và thời gian phải được đưa ra. Nếu nó có tên, ngày và giờ được đặt thành ngày và giờ hiện tại. Lưu trữ phải được mở với Chế độ
zip.write(locfile, os.path.basename(locfile))
4,
zip.write(locfile, os.path.basename(locfile))
6 hoặc
zip.write(locfile, os.path.basename(locfile))
5.

Nếu được đưa ra, nén_type ghi đè giá trị được đưa ra cho tham số nén cho hàm tạo cho mục nhập mới hoặc trong zinfo_or_arcname (nếu đó là một ví dụ

>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4). Tương tự, nén sẽ ghi đè hàm tạo nếu được đưa ra.

Ghi chú

Khi chuyển một thể hiện

>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4 dưới dạng tham số zinfo_or_arcname, phương thức nén được sử dụng sẽ được chỉ định trong thành viên nén_type của thể hiện
>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4 đã cho. Theo mặc định, hàm tạo
>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4 đặt thành viên này thành
ZipFile.write(filename, arcname=None, compress_type=None)
4.

Đã thay đổi trong phiên bản 3.2: Đối số nén_type.The compress_type argument.

Đã thay đổi trong phiên bản 3.6: Gọi

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
69 trên zipfile được tạo với chế độ
zip.write(locfile, os.path.basename(locfile))
3 hoặc zipfile đóng sẽ tăng
$ python -m zipfile -c monty.zip spam.txt eggs.txt
4. Trước đây, một
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
5 đã được nâng lên.Calling
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
69 on a ZipFile created with mode
zip.write(locfile, os.path.basename(locfile))
3 or a closed ZipFile will raise a
$ python -m zipfile -c monty.zip spam.txt eggs.txt
4. Previously, a
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
5 was raised.

Zipfile.mkdir (zinfo_or_directory, mode = 511) ¶mkdir(zinfo_or_directory, mode=511)

Tạo một thư mục bên trong kho lưu trữ. Nếu zinfo_or_directory là một chuỗi, một thư mục được tạo bên trong kho lưu trữ với chế độ được chỉ định trong đối số chế độ. Tuy nhiên, nếu zinfo_or_directory là một ví dụ

>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4 thì đối số chế độ bị bỏ qua.

Lưu trữ phải được mở với Chế độ

zip.write(locfile, os.path.basename(locfile))
4,
zip.write(locfile, os.path.basename(locfile))
6 hoặc
zip.write(locfile, os.path.basename(locfile))
5.

Mới trong phiên bản 3.11.

Các thuộc tính dữ liệu sau đây cũng có sẵn:

Zipfile.filename¶filename

Tên của tệp zip.

Zipfile.debug¶debug

Mức độ đầu ra gỡ lỗi để sử dụng. Điều này có thể được đặt từ

with ZipFile('spam.zip') as myzip:
    with myzip.open('eggs.txt') as myfile:
        print(myfile.read())
3 (mặc định, không có đầu ra) thành
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
78 (đầu ra nhiều nhất). Thông tin gỡ lỗi được ghi vào
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
31.

Nhận xét liên quan đến tệp zip dưới dạng đối tượng

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
58. Nếu gán một nhận xét cho một thể hiện
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
6 được tạo với chế độ
zip.write(locfile, os.path.basename(locfile))
4,
zip.write(locfile, os.path.basename(locfile))
6 hoặc
zip.write(locfile, os.path.basename(locfile))
5, nó sẽ không dài hơn 65535 byte. Nhận xét lâu hơn điều này sẽ bị cắt ngắn.

Đối tượng đường dẫn Sở đối tượng

classzipfile.path (root, at = '') ¶zipfile.Path(root, at='')

Xây dựng một đối tượng đường dẫn từ một zipfile

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
85 (có thể là một ví dụ
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
6 hoặc
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
87 phù hợp để chuyển đến hàm tạo
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
6).

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
89 Chỉ định vị trí của đường dẫn này trong zipfile, ví dụ: ‘DIR/FILE.TXT,‘ Dir/xông, hoặc ‘. Mặc định cho chuỗi trống, chỉ ra gốc.

Các đối tượng đường dẫn hiển thị các tính năng sau của các đối tượng

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
90:

Các đối tượng đường dẫn có thể đi qua bằng toán tử

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
91 hoặc
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
92.

Path.Name¶name

Thành phần đường dẫn cuối cùng.

Path.open (mode = 'r', *, pwd, **) ¶open(mode='r', *, pwd, **)

Gọi

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
02 trên đường dẫn hiện tại. Cho phép mở để đọc hoặc viết, văn bản hoặc nhị phân thông qua các chế độ được hỗ trợ: ‘R,‘ W, ‘RB,‘ WB. Đối số vị trí và từ khóa được chuyển qua
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
94 khi được mở dưới dạng văn bản và bị bỏ qua khác.
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
95 là tham số
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
95 thành
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
02.

Đã thay đổi trong phiên bản 3.9: Đã thêm hỗ trợ cho các chế độ văn bản và nhị phân để mở. Chế độ mặc định bây giờ là văn bản.Added support for text and binary modes for open. Default mode is now text.

Path.iterdir () ¶iterdir()

Liệt kê những đứa trẻ của thư mục hiện tại.

Path.is_dir ()is_dir()

Trả về

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
8 Nếu bối cảnh hiện tại tham khảo một thư mục.

Path.is_file () ¶is_file()

Trả về

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
8 Nếu bối cảnh hiện tại tham khảo một tệp.

Path.exists () ¶exists()

Trả về

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
8 Nếu bối cảnh hiện tại tham chiếu một tệp hoặc thư mục trong tệp zip.

Path.Suffix¶suffix

Phần mở rộng tập tin của thành phần cuối cùng.

Mới trong phiên bản 3.11: Đã thêm thuộc tính

zip.write(locfile, os.path.basename(locfile))
01.Added
zip.write(locfile, os.path.basename(locfile))
01 property.

Path.stem¶stem

Thành phần đường dẫn cuối cùng, không có hậu tố của nó.

Mới trong phiên bản 3.11: Đã thêm thuộc tính

zip.write(locfile, os.path.basename(locfile))
02.Added
zip.write(locfile, os.path.basename(locfile))
02 property.

Path.Suffixes¶suffixes

Một danh sách các phần mở rộng tệp đường dẫn.

Path.read_text (*, **) ¶read_text(*, **)

Đọc tệp hiện tại dưới dạng văn bản Unicode. Các đối số vị trí và từ khóa được chuyển qua

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
94 (ngoại trừ
zip.write(locfile, os.path.basename(locfile))
04, được ngụ ý bởi bối cảnh).

Path.read_bytes () ¶read_bytes()

Đọc tệp hiện tại dưới dạng byte.

Path.joinpath (*khác) ¶joinpath(*other)

Trả về một đối tượng đường dẫn mới với mỗi đối số khác đã tham gia. Sau đây là tương đương:

>>> Path(...).joinpath('child').joinpath('grandchild')
>>> Path(...).joinpath('child', 'grandchild')
>>> Path(...) / 'child' / 'grandchild'

Đã thay đổi trong phiên bản 3.10: Trước 3.10,

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
92 không được giấy tờ và được chấp nhận chính xác một tham số.Prior to 3.10,
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
92 was undocumented and accepted exactly one parameter.

Dự án ZIPP cung cấp backports của chức năng đối tượng đường dẫn mới nhất cho Pythons cũ hơn. Sử dụng

zip.write(locfile, os.path.basename(locfile))
06 thay cho
zip.write(locfile, os.path.basename(locfile))
07 để truy cập sớm vào các thay đổi.

Đối tượng pyzipfile

Chất xây dựng

zip.write(locfile, os.path.basename(locfile))
08 có cùng tham số với hàm tạo
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
6 và một tham số bổ sung, tối ưu hóa.

classzipfile.pyzipfile (file, mode = 'r', nén = zip_stored, allowzip64 = true, tối ưu hóa = -1) ¶zipfile.PyZipFile(file, mode='r', compression=ZIP_STORED, allowZip64=True, optimize=- 1)

Mới trong phiên bản 3.2: Tham số tối ưu hóa.The optimize parameter.

Đã thay đổi trong phiên bản 3.4: Tiện ích mở rộng ZIP64 được bật theo mặc định.ZIP64 extensions are enabled by default.

Các trường hợp có một phương thức ngoài các đối tượng

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
6:

writepy (pathName, basename = '', filterFunc = none) ¶(pathname, basename='', filterfunc=None)

Tìm kiếm các tệp

zip.write(locfile, os.path.basename(locfile))
11 và thêm tệp tương ứng vào kho lưu trữ.

Nếu tham số tối ưu hóa thành

zip.write(locfile, os.path.basename(locfile))
08 không được đưa ra hoặc
zip.write(locfile, os.path.basename(locfile))
13, tệp tương ứng là tệp
zip.write(locfile, os.path.basename(locfile))
14, biên dịch nếu cần thiết.

Nếu tham số tối ưu hóa thành

zip.write(locfile, os.path.basename(locfile))
08 là
with ZipFile('spam.zip') as myzip:
    with myzip.open('eggs.txt') as myfile:
        print(myfile.read())
3,
with ZipFile('spam.zip') as myzip:
    with myzip.open('eggs.txt') as myfile:
        print(myfile.read())
7 hoặc
zip.write(locfile, os.path.basename(locfile))
18, chỉ các tệp có mức tối ưu hóa đó (xem
zip.write(locfile, os.path.basename(locfile))
19) được thêm vào kho lưu trữ, biên dịch nếu cần thiết.

Nếu PathName là một tệp, tên tệp phải kết thúc bằng

zip.write(locfile, os.path.basename(locfile))
20 và chỉ là tệp (tương ứng ____214) được thêm vào ở cấp cao nhất (không có thông tin đường dẫn). Nếu PathName là một tệp không kết thúc bằng
zip.write(locfile, os.path.basename(locfile))
20, thì
with ZipFile('spam.zip', 'w') as myzip:
    myzip.write('eggs.txt')
5 sẽ được nêu ra. Nếu đó là một thư mục và thư mục không phải là thư mục gói, thì tất cả các tệp
zip.write(locfile, os.path.basename(locfile))
14 được thêm vào ở cấp cao nhất. Nếu thư mục là một thư mục gói, thì tất cả
zip.write(locfile, os.path.basename(locfile))
14 được thêm vào tên gói dưới dạng đường dẫn tệp và nếu bất kỳ thư mục con nào là thư mục gói, tất cả đều được thêm vào theo thứ tự được sắp xếp theo thứ tự.

Basename chỉ dành cho sử dụng nội bộ.

FilterFunc, nếu được đưa ra, phải là một hàm lấy một đối số chuỗi duy nhất. Nó sẽ được thông qua mỗi đường dẫn (bao gồm mỗi đường dẫn tệp đầy đủ riêng lẻ) trước khi nó được thêm vào kho lưu trữ. Nếu FilterFunc trả về một giá trị sai, đường dẫn sẽ không được thêm vào và nếu đó là một thư mục, nội dung của nó sẽ bị bỏ qua. Ví dụ: nếu các tệp thử nghiệm của chúng tôi đều có trong các thư mục

zip.write(locfile, os.path.basename(locfile))
26 hoặc bắt đầu với chuỗi
zip.write(locfile, os.path.basename(locfile))
27, chúng tôi có thể sử dụng FilterFunc để loại trừ chúng:

>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)

Phương thức

zip.write(locfile, os.path.basename(locfile))
28 tạo ra tài liệu lưu trữ với tên tệp như thế này:

string.pyc                   # Top level name
test/__init__.pyc            # Package directory
test/testall.pyc             # Module test.testall
test/bogus/__init__.pyc      # Subpackage directory
test/bogus/myfile.pyc        # Submodule test.bogus.myfile

Mới trong phiên bản 3.4: Tham số FilterFunc.The filterfunc parameter.

Đã thay đổi trong phiên bản 3.6.2: Tham số PathName chấp nhận một đối tượng giống như đường dẫn.The pathname parameter accepts a path-like object.

Đã thay đổi trong phiên bản 3.7: Các mục nhập thư mục sắp xếp đệ quy.Recursion sorts directory entries.

Đối tượng Zipinfo

Các trường hợp của lớp

>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4 được trả về bởi các phương thức
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
4 và
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
5 của các đối tượng
zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
6. Mỗi đối tượng lưu trữ thông tin về một thành viên duy nhất của kho lưu trữ zip.

Có một classmethod để tạo một thể hiện

>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4 cho tệp hệ thống tập tin:

classMethodzipInfo.from_file (fileName, arcName = none, *, strict_timestamp = true) ¶ ZipInfo.from_file(filename, arcname=None, *, strict_timestamps=True)

Xây dựng một thể hiện

>>> zf = PyZipFile('myprog.zip')
>>> def notests(s):
...     fn = os.path.basename(s)
...     return (not (fn == 'test' or fn.startswith('test_')))
>>> zf.writepy('myprog', filterfunc=notests)
4 cho một tệp trên hệ thống tập tin, để chuẩn bị thêm nó vào tệp zip.

Tên tệp phải là đường dẫn đến một tệp hoặc thư mục trên hệ thống tệp.

Nếu ArcName được chỉ định, nó được sử dụng làm tên trong kho lưu trữ. Nếu ArcName không được chỉ định, tên sẽ giống như tên tệp, nhưng với bất kỳ ký tự ổ đĩa nào và các dấu phân cách đường dẫn hàng đầu bị xóa.

Đối số StricT_Timestamp, khi được đặt thành

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
9, cho phép zip các tệp cũ hơn 1980-01-01 với chi phí đặt dấu thời gian thành 1980-01-01. Hành vi tương tự xảy ra với các tệp mới hơn 2107-12-31, dấu thời gian cũng được đặt ở giới hạn.

Mới trong phiên bản 3.6.

Đã thay đổi trong phiên bản 3.6.2: Tham số tên tệp chấp nhận một đối tượng giống như đường dẫn.The filename parameter accepts a path-like object.

Mới trong Phiên bản 3.8: Đối số chỉ từ khóa của Strict_TimestampsThe strict_timestamps keyword-only argument

Các phiên bản có các phương thức và thuộc tính sau:

Zipinfo.is_dir ()is_dir()

Trả về

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
8 Nếu thành viên lưu trữ này là một thư mục.

Điều này sử dụng tên mục nhập tên: Các thư mục phải luôn kết thúc bằng

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
91.

Mới trong phiên bản 3.6.

Đã thay đổi trong phiên bản 3.6.2: Tham số tên tệp chấp nhận một đối tượng giống như đường dẫn.filename

Mới trong Phiên bản 3.8: Đối số chỉ từ khóa của Strict_Timestamps

Các phiên bản có các phương thức và thuộc tính sau:date_time

Zipinfo.is_dir ()

Trả về

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
8 Nếu thành viên lưu trữ này là một thư mục.

Điều này sử dụng tên mục nhập tên: Các thư mục phải luôn kết thúc bằng

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
91.

with ZipFile('spam.zip') as myzip:
    with myzip.open('eggs.txt') as myfile:
        print(myfile.read())
3

Zipinfo.filename¶

with ZipFile('spam.zip') as myzip:
    with myzip.open('eggs.txt') as myfile:
        print(myfile.read())
7

Tên của tập tin trong kho lưu trữ.

zip.write(locfile, os.path.basename(locfile))
18

Zipinfo.date_time¶

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
78

Thời gian và ngày sửa đổi cuối cùng cho thành viên lưu trữ. Đây là một bộ ba giá trị:

zip.write(locfile, os.path.basename(locfile))
42

Mục lục

zip.write(locfile, os.path.basename(locfile))
43

Giá trị

Năm (> = 1980)

Tháng (dựa trên một)

Ngày trong tháng (dựa trên một)compress_type

Giờ (không dựa trên)

Biên bản (không dựa trên)

Giây (dựa trên không)

Zipinfo.create_system¶create_system

Hệ thống tạo ra kho lưu trữ zip.

Zipinfo.create_version¶create_version

Phiên bản PKZIP tạo ra kho lưu trữ zip.

Phiên bản PKZIP cần thiết để trích xuất Lưu trữ.

Zipinfo.reserved¶reserved

Phải bằng không.

Zipinfo.flag_bits¶flag_bits

BIT cờ zip.

Zipinfo.volume¶volume

Số lượng tiêu đề tập tin.

Zipinfo.Inalal_attr¶internal_attr

Thuộc tính nội bộ.

Zipinfo.external_attr¶external_attr

Thuộc tính tệp bên ngoài.

Byte bù vào tiêu đề tập tin.

Zipinfo.crc¶CRC

CRC-32 của tệp không nén.

Zipinfo.compress_size¶compress_size

Kích thước của dữ liệu nén.

Zipinfo.file_size¶file_size

Kích thước của tập tin không nén.

Giao diện dòng lệnh

Mô-đun

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
7 cung cấp giao diện dòng lệnh đơn giản để tương tác với kho lưu trữ zip.

Nếu bạn muốn tạo một kho lưu trữ zip mới, hãy chỉ định tên của nó sau tùy chọn

zip.write(locfile, os.path.basename(locfile))
47 và sau đó liệt kê (các) tên tệp nên được bao gồm:

$ python -m zipfile -c monty.zip spam.txt eggs.txt

Vượt qua một thư mục cũng được chấp nhận:

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
0

Nếu bạn muốn trích xuất một kho lưu trữ zip vào thư mục được chỉ định, hãy sử dụng tùy chọn

zip.write(locfile, os.path.basename(locfile))
48:

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
1

Đối với danh sách các tệp trong kho lưu trữ zip, hãy sử dụng tùy chọn

zip.write(locfile, os.path.basename(locfile))
49:

zip = zipfile.ZipFile(loczip, "w", zipfile.ZIP_DEFLATED)
2

Tùy chọn dòng lệnh mà

-L¶ - -List¶ --list

Liệt kê các tập tin trong một zipfile.

-c ... ¶ -tạo ra ... ¶ ... --create ...

Tạo zipfile từ các tập tin nguồn.

-e¶

Trích xuất zipfile vào thư mục đích.

-T¶ -Test¶ --test

Kiểm tra xem zipfile có hợp lệ hay không.

.

Chỉ định mã hóa tên thành viên cho

zip.write(locfile, os.path.basename(locfile))
49,
zip.write(locfile, os.path.basename(locfile))
48 và
zip.write(locfile, os.path.basename(locfile))
52.

Mới trong phiên bản 3.11.

Cạm bẫy giải nén

Việc trích xuất trong mô -đun Zipfile có thể thất bại do một số cạm bẫy được liệt kê dưới đây.

Từ tập tin chính nó

Giải quyết có thể thất bại do mật khẩu / định dạng kiểm tra CRC / ZIP không chính xác hoặc phương pháp nén / giải mã không được hỗ trợ.

Giới hạn hệ thống tệp

Vượt quá giới hạn trên các hệ thống tệp khác nhau có thể gây ra giải nén không thành công. Chẳng hạn như các ký tự được phép trong các mục nhập thư mục, độ dài của tên tệp, độ dài của tên đường dẫn, kích thước của một tệp và số lượng tệp, v.v.

Giới hạn tài nguyên

Việc thiếu bộ nhớ hoặc khối lượng đĩa sẽ dẫn đến giải nén không thành công. Ví dụ, bom giải nén (còn gọi là bom zip) áp dụng cho thư viện zipfile có thể gây cạn kiệt khối lượng đĩa.

Sự gián đoạn

Sự gián đoạn trong quá trình giải nén, chẳng hạn như cấp kiểm soát-C hoặc tiêu diệt quá trình giải nén có thể dẫn đến giải nén không hoàn toàn của kho lưu trữ.

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

Tạo một kho lưu trữ zip từ nhiều tệp trong Python Tạo một đối tượng zipfile bằng cách chuyển tên tệp và chế độ mới dưới dạng 'w' (chế độ ghi). Nó sẽ tạo một tệp zip mới và mở nó trong đối tượng zipfile. Chức năng ghi () trên đối tượng ZipFile để thêm các tệp trong đó. Gọi Đóng () trên đối tượng ZipFile để đóng tệp zip.Create a ZipFile object by passing the new file name and mode as 'w' (write mode). It will create a new zip file and open it within ZipFile object. Call write() function on ZipFile object to add the files in it. call close() on ZipFile object to Close the zip file.

Tệp nén trong Python là gì?

Chúng tôi mở và đọc tệp này vào bộ nhớ và sau đó sử dụng chức năng nén để tạo dữ liệu nén.Dữ liệu này sau đó được viết vào tệp đầu ra.Để chứng minh rằng chúng tôi có thể khôi phục dữ liệu, sau đó chúng tôi lại mở tệp nén và sử dụng chức năng giải nén trên đó.

Làm thế nào bạn sẽ zip và giải nén các tệp trong Python?

Nhập mô -đun zipfile Tạo đối tượng tệp ZIP bằng lớp ZipFile.Gọi phương thức trích xuất () trên đối tượng tệp zip và truyền tên của tệp để được trích xuất và đường dẫn nơi tệp cần được trích xuất và trích xuất tệp cụ thể có trong zip.Create a zip file object using ZipFile class. Call the extract() method on the zip file object and pass the name of the file to be extracted and the path where the file needed to be extracted and Extracting the specific file present in the zip.

Làm cách nào để giảm kích thước của một zipfile?

Để bắt đầu, bạn cần tìm một thư mục trên máy tính mà bạn muốn nén ...
Tìm một thư mục bạn muốn nén ..
Nhấp chuột phải vào thư mục ..
Tìm "Gửi đến" trong menu thả xuống ..
Chọn "Thư mục nén (zipped).".