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 BadZipFile
, để 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.ZipFileLớ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.PathMộ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.PyZipFileLớ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
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]0 và
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]1 của các đối tượng
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]2. Hầu hết người dùng của mô -đun
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]3 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ề
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]4 Nếu tên tệp là tệp zip hợp lệ dựa trên số ma thuật của nó, nếu không, sẽ trả về
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]5. 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 yêu cầu mô -đun
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]6. 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
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]7.
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 đòi hỏi mô -đun
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]8.
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 đòi hỏi mô -đun
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]8.
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 PKZIPTà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
Mở tệp zip, trong đó tệp có thể là đường dẫn đến tệp [chuỗi], đối tượng giống như tệp hoặc đối tượng giống như đường dẫn.
Tham số chế độ phải là
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]9 để đọc một tệp hiện có,
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'0 để cắt và viết một tệp mới,
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'1 để nối vào một tệp hiện có hoặc
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'2 để tạo và ghi một tệp mới. Nếu chế độ là
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'2 và tệp đề cập đến một tệp hiện có,
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'4 sẽ được nêu ra. Nếu chế độ là
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'1 và tệp đề cập đến một tệp zip hiện có, thì các tệp bổ sung được thêm vào nó. Nếu tệp không tham khảo tệp zip, thì lưu trữ zip mới được nối vào tệp. Điều này có nghĩa là để thêm một kho lưu trữ zip vào một tệp khác [chẳng hạn như
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'6]. Nếu chế độ là
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'1 và tệp hoàn toàn không tồn tại, nó sẽ được tạo. Nếu chế độ là
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]9 hoặc
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'1, tệp sẽ có thể tìm được.
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
>>> 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]0 hoặc
>>> 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, nó không có tác dụng. Khi sử dụng số nguyê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]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.myfile9 đến
$ python -m zipfile -c monty.zip spam.txt eggs.txt
0 được chấp nhận [xem with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]6 để biết thêm thông tin]. Khi sử dụng số nguyê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]2
$ python -m zipfile -c monty.zip spam.txt eggs.txt
3 đến $ python -m zipfile -c monty.zip spam.txt eggs.txt
0 được chấp nhận [xem with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]7 để biết thêm thông tin].
Đối số StricT_Timestamp, khi được đặt thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]5, 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à
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]9, 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ế độ
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'0,
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'2 hoặc
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'1 và sau đó
$ python -m zipfile -c monty.zip life-of-brian_1979/
1 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 một 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
$ python -m zipfile -c monty.zip life-of-brian_1979/
2. Trong ví dụ, Myzip bị đóng sau khi bộ câu lệnh $ python -m zipfile -c monty.zip life-of-brian_1979/
2 đã 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 with ZipFile['spam.zip'] as myzip:
with myzip.open['eggs.txt'] as myfile:
print[myfile.read[]]
2 làm trình quản lý ngữ cảnh.Added the ability to use
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]2 as a context manager.
Đã thay đổi trong phiên bản 3.3: Đã thêm hỗ trợ cho nén $ python -m zipfile -c monty.zip life-of-brian_1979/
5 và with ZipFile['spam.zip'] as myzip:
with myzip.open['eggs.txt'] as myfile:
print[myfile.read[]]
8.Added support for
$ python -m zipfile -c monty.zip life-of-brian_1979/
5 and with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]8 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ế độ >>> Path[...].joinpath['child'].joinpath['grandchild']
>>> Path[...].joinpath['child', 'grandchild']
>>> Path[...] / 'child' / 'grandchild'
2.Added support for writing to
unseekable streams. Added support for the
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'2 mode.
Đã thay đổi trong phiên bản 3.6: Trước đây, một 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 đơ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
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.myfile1 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
$ python -m zipfile -c monty.zip life-of-brian_1979/
9 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
$ python -m zipfile -e monty.zip target-dir/
0 với thông tin về tên thành viên lưu trữ. Gọi with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]0 cho một tên hiện không có trong kho lưu trữ sẽ tăng
$ python -m zipfile -e monty.zip target-dir/
2.Trả về một danh sách chứa một đối tượng
$ python -m zipfile -e monty.zip target-dir/
0 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
$ python -m zipfile -e monty.zip target-dir/
0. Tham số chế độ, nếu được bao gồm, phải là with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]9 [mặc định] hoặc
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'0. NKT là mật khẩu được sử dụng để giải mã các tệp zip được mã hóa.
$ python -m zipfile -e monty.zip target-dir/
7 cũng là người quản lý bối cảnh và do đó hỗ trợ câu lệnh $ python -m zipfile -c monty.zip life-of-brian_1979/
2:with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]
Với chế độ
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]9 đối tượng giống như tệp [
$ python -m zipfile -l monty.zip
0] chỉ đọc và cung cấp các phương pháp sau: $ python -m zipfile -l monty.zip
1, $ python -m zipfile -l monty.zip
2, $ python -m zipfile -l monty.zip
3, $ python -m zipfile -l monty.zip
4, $ python -m zipfile -l monty.zip
5, $ python -m zipfile -l monty.zip
6, $ python -m zipfile -l monty.zip
7. Các đối tượng này có thể hoạt động độc lập với zipfile.Với
$ python -m zipfile -l monty.zip
8, một tay cầm tệp có thể ghi được trả về, hỗ trợ phương thức $ python -m zipfile -l monty.zip
9. 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 BadZipFile
0.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 BadZipFile
1 để đả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
$ python -m zipfile -e monty.zip target-dir/
0 với BadZipFile
3 và sử dụng nó làm tham số tên.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.BadZipFile
8 can now be used to write files into the archive with the
$ python -m zipfile -l monty.zip
8 option.Đã thay đổi trong phiên bản 3.6: Gọi $ python -m zipfile -e monty.zip target-dir/
7 trên Zipfile đóng sẽ tăng BadZipFile
0. Trước đây, một 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 nâng lên.Calling
$ python -m zipfile -e monty.zip target-dir/
7 on a
closed ZipFile will raise a BadZipFile
0. Previously, 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.myfile1 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
$ python -m zipfile -e monty.zip target-dir/
0. 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 $ python -m zipfile -e monty.zip target-dir/
0. 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ú
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ụ:
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]05 trở thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]06 trên Unix và
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]07 trở thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]08 trên Windows. Và tất cả các thành phần
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]09 trong tên tệp thành viên sẽ bị xóa, ví dụ:
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]10 trở thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]11. Trên các ký tự bất hợp pháp của Windows [
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]12,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]13,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]14,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]15,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]16,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]17 và
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]18] được thay thế bằng dấu gạch dưới [
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]19].
Đã thay đổi trong phiên bản 3.6: Gọi BadZipFile
6 trên Zipfile đóng sẽ tăng BadZipFile
0. Trước đây, một 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 nâng lên.Calling BadZipFile
6 on a closed ZipFile will raise a BadZipFile
0. Previously, 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.myfile1 was raised.
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.The path parameter accepts a path-like object.
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
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]23. NKT là mật khẩu được sử dụng cho các tệp được mã hóa.
Cảnh báo
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
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]24 hoặc tên tệp với hai dấu chấm
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]09. Mô -đun này cố gắng ngăn chặn điều đó. Xem lưu ý
BadZipFile
6.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.The path parameter accepts a path-like object.
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ởiwith ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]23. NKT là mật khẩu được sử dụng cho các tệp được mã hóa.printdir[]¶
Cảnh báo
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ằngwith ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]24 hoặc tên tệp với hai dấu chấm
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]09. Mô -đun này cố gắng ngăn chặn điều đó. Xem lưu ý
BadZipFile
6.setpassword[pwd]¶Zipfile.printdir [] ¶
In một bảng nội dung cho kho lưu trữ đếnwith ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]27.read[name, pwd=None]¶
Zipfile.setPassword [pwd] ¶
Đặt PWD làm mật khẩu mặc định để trích xuất các tệp được mã hóa.Calling
$ python -m zipfile -l monty.zip
1 on a closed ZipFile will raise a BadZipFile
0. Previously, 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.myfile1 was raised. Zipfile.read [tên, pwd = none] ¶testzip[]¶
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
$ python -m zipfile -e monty.zip target-dir/
0. 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 with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]29. Gọi
$ python -m zipfile -l monty.zip
1 trên ZipFile sử dụng phương thức nén khác vớ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]0,
>>> 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]1,
>>> 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]2 hoặc
>>> 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 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]4. 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.
Đã thay đổi trong phiên bản 3.6: Gọi $ python -m zipfile -l monty.zip
1 trên Zipfile đóng sẽ tăng BadZipFile
0. Trước đây, một 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 nâng lên.Calling
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]40 on a closed ZipFile will raise a
BadZipFile
0. Previously, 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.myfile1 was raised. Zipfile.testzip []write[filename, arcname=None, compress_type=None, compresslevel=None]¶
Đọc tất cả các tệp trong kho lưu trữ và kiểm tra các tiêu đề CRC và tệp của họ. Trả về tên của tệp xấu đầu tiên, hoặc nếu không trả về
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]39.
Ghi chú
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ụ:
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]05 trở thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]06 trên Unix và
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]07 trở thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]08 trên Windows. Và tất cả các thành phần
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]09 trong tên tệp thành viên sẽ bị xóa, ví dụ:
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]10 trở thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]11. Trên các ký tự bất hợp pháp của Windows [
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]12,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]13,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]14,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]15,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]16,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]17 và
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]18] được thay thế bằng dấu gạch dưới [
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]19].
Ghi chú
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ụ:
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]05 trở thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]06 trên Unix và
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]07 trở thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]08 trên Windows. Và tất cả các thành phần
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]09 trong tên tệp thành viên sẽ bị xóa, ví dụ:
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]10 trở thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]11. Trên các ký tự bất hợp pháp của Windows [
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]12,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]13,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]14,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]15,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]16,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]17 và
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]18] được thay thế bằng dấu gạch dưới [
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]19].
Ghi chú
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ụ:
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]05 trở thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]06 trên Unix và
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]07 trở thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]08 trên Windows. Và tất cả các thành phần
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]09 trong tên tệp thành viên sẽ bị xóa, ví dụ:
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]10 trở thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]11. Trên các ký tự bất hợp pháp của Windows [
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]12,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]13,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]14,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]15,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]16,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]17 và
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]18] được thay thế bằng dấu gạch dưới [
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]19].
Ghi chú
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ụ:
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]05 trở thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]06 trên Unix và
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]07 trở thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]08 trên Windows. Và tất cả các thành phần
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]09 trong tên tệp thành viên sẽ bị xóa, ví dụ:
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]10 trở thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]11. Trên các ký tự bất hợp pháp của Windows [
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]12,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]13,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]14,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]15,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]16,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]17 và
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]18] được thay thế bằng dấu gạch dưới [
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]19].
Đã thay đổi trong phiên bản 3.6: Gọi BadZipFile
6 trên Zipfile đóng sẽ tăng BadZipFile
0. Trước đây, một 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 nâng lên.Calling
$ python -m zipfile -l monty.zip
9 on a ZipFile created with mode with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]9 or a closed ZipFile will raise a
BadZipFile
0. Previously, 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.myfile1 was raised. 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.writestr[zinfo_or_arcname, data, compress_type=None, compresslevel=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
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]23. NKT là mật khẩu được sử dụng cho các tệp được mã hóa.
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ụ
$ python -m zipfile -e monty.zip target-dir/
0]. 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
$ python -m zipfile -e monty.zip target-dir/
0 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 $ python -m zipfile -e monty.zip target-dir/
0 đã cho. Theo mặc định, hàm tạo $ python -m zipfile -e monty.zip target-dir/
0 đặt thành viên này thành >>> 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]0.
Đã 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 with ZipFile['spam.zip'] as myzip:
with myzip.open['eggs.txt'] as myfile:
print[myfile.read[]]
65 trên zipfile được tạo với chế độ with ZipFile['spam.zip'] as myzip:
with myzip.open['eggs.txt'] as myfile:
print[myfile.read[]]
9 hoặc zipfile đóng sẽ tăng BadZipFile
0. Trước đây, một 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 nâng lên.Calling
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]65 on a ZipFile created with mode
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]9 or a closed ZipFile will raise a
BadZipFile
0. Previously, 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.myfile1 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ụ
$ python -m zipfile -e monty.zip target-dir/
0 thì đối số chế độ bị bỏ qua.Lưu trữ phải được mở với Chế độ
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'0,
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'2 hoặc
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'1.
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ừ
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.myfile9 [mặc định, không có đầu ra] thành
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]74 [đầu ra nhiều nhất]. Thông tin gỡ lỗi được ghi vào
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]27.
Nhận xét liên quan đến tệp zip dưới dạng đối tượng
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]54. Nếu gán một nhận xét cho một thể hiện
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]2 được tạo với chế độ
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'0,
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'2 hoặc
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'1, 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
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]81 [có thể là một ví dụ
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]2 hoặc
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]83 phù hợp để chuyển đến hàm tạo
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]2].
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]85 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
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]86:
Các đối tượng đường dẫn có thể đi qua bằng toán tử
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]87 hoặc
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]88. 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 BadZipFile
8 trên con đường 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
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]90 khi được mở dưới dạng văn bản và bị bỏ qua.
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]91 là tham số
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]91 thành
BadZipFile
8.Đã 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ề
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]4 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ề
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]4 Nếu bối cảnh hiện tại tham khảo một tệp. Path.exists [] ¶exists[]¶
Trả về
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]4 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 with ZipFile['spam.zip'] as myzip:
with myzip.open['eggs.txt'] as myfile:
print[myfile.read[]]
97.Added
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]97 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 with ZipFile['spam.zip'] as myzip:
with myzip.open['eggs.txt'] as myfile:
print[myfile.read[]]
98.Added
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]98 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 truyền qua
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]90 [ngoại trừ
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'00, đượ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, with ZipFile['spam.zip'] as myzip:
with myzip.open['eggs.txt'] as myfile:
print[myfile.read[]]
88 không được giấy tờ và được chấp nhận chính xác một tham số.Prior to 3.10,
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]88 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
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'02 thay cho
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'03 để truy cập sớm vào các thay đổi.
Đối tượng pyzipfile
Chất xây dựng
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'04 có các tham số giống như hàm tạo
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]2 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
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]2: writepy [pathName, basename = '', filterFunc = none] ¶[pathname, basename='', filterfunc=None]¶
Tìm kiếm các tệp
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'07 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
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'04 không được đưa ra hoặc
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'09, tệp tương ứng là tệp
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'10, biên dịch nếu cần thiết.
Nếu tham số tối ưu hóa thành
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'04 là
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.myfile9,
$ python -m zipfile -c monty.zip spam.txt eggs.txt
3 hoặc >>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'14, chỉ các tệp có mức tối ưu hóa đó [xem
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'15] đượ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
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'16 và chỉ là tệp [tương ứng ____210] đượ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
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'16, thì
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.myfile1 sẽ được nâng lên. 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
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'10 đượ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ả
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'10 đượ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
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'22 hoặc bắt đầu với chuỗi
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'23, 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
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'24 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 phiên bản của lớp
$ python -m zipfile -e monty.zip target-dir/
0 được trả về bởi các phương thức ____10 và with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]1 của các đối tượng
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]2. 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 phiên bản
$ python -m zipfile -e monty.zip target-dir/
0 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
$ python -m zipfile -e monty.zip target-dir/
0 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
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]5, 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ề
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]4 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
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]87.
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 []
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.myfile9 | Zipinfo.filename¶ |
$ python -m zipfile -c monty.zip spam.txt eggs.txt
3
| Tên của tập tin trong kho lưu trữ. |
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'14 | Zipinfo.date_time¶ |
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]74 | 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ị: |
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'38 | Mục lục |
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'39 | 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]
Ghi chúcreate_system¶Định dạng tệp ZIP không hỗ trợ dấu thời gian trước năm 1980.
Zipinfo.compress_type¶create_version¶Loại nén cho thành viên lưu trữ.
Nhận xét cho thành viên lưu trữ riêng lẻ là đối tượng
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]54. Dữ liệu trường mở rộng. Ghi chú ứng dụng PKZIP chứa một số nhận xét về cấu trúc bên trong của dữ liệu có trong đối tượng
with ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]54 này.reserved¶
Zipinfo.create_system¶
Hệ thống tạo ra kho lưu trữ zip.flag_bits¶Zipinfo.create_version¶
Phiên bản PKZIP tạo ra kho lưu trữ zip.volume¶Phiên bản PKZIP cần thiết để trích xuất Lưu trữ.
Zipinfo.reserved¶internal_attr¶Phải bằng không.
Zipinfo.flag_bits¶external_attr¶BIT cờ zip.
Zipinfo.volume¶
Số lượng tiêu đề tập tin.CRC¶Zipinfo.Inalal_attr¶
Thuộc tính nội bộ.compress_size¶Zipinfo.external_attr¶
Thuộc tính tệp bên ngoài.file_size¶Byte bù vào tiêu đề tập tin.
Zipinfo.crc¶
CRC-32 của tệp không nén.
Zipinfo.compress_size¶
$ python -m zipfile -c monty.zip spam.txt eggs.txt
Kích thước của dữ liệu nén.
$ python -m zipfile -c monty.zip life-of-brian_1979/
Zipinfo.file_size¶
$ python -m zipfile -e monty.zip target-dir/
Kích thước của tập tin không nén.
$ python -m zipfile -l monty.zip
Giao diện dòng lệnh
Mô-đunwith ZipFile['spam.zip'] as myzip: with myzip.open['eggs.txt'] as myfile: print[myfile.read[]]3 cung cấp giao diện dòng lệnh đơn giản để tương tác với kho lưu trữ zip. ¶ --list ¶
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
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'43 và sau đó liệt kê [các] tên tệp nên được bao gồm: Vượt qua một thư mục cũng được chấp nhận: ... ¶ --create ... ¶
Nếu bạn muốn trích xuất kho lưu trữ zip vào thư mục được chỉ định, hãy sử dụng tùy chọn
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'44: -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
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'45,
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'44 và
>>> Path[...].joinpath['child'].joinpath['grandchild'] >>> Path[...].joinpath['child', 'grandchild'] >>> Path[...] / 'child' / 'grandchild'48.
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ữ.