Python tạo tệp zip không có cấu trúc thư mục

Có nhiều cách để nén tệp trong thư mục. Mục đích của bài viết này là mô tả một số tùy chọn nhanh để nén một thư mục cụ thể. Nó sẽ mô tả cách thực hiện việc này bằng phương pháp Kéo và Thả và menu ngữ cảnh WinZip. Vui lòng xem các liên kết Bài viết liên quan ở cuối bài viết này để biết thêm thông tin

Để nén một thư mục bằng Kéo và Thả, bạn có thể

  • Kéo thư mục bạn muốn nén vào tệp Zip hiện có
  • Kéo thư mục bạn muốn nén vào lối tắt trên màn hình WinZip
  • Kéo thư mục bạn muốn nén vào cửa sổ WinZip đang mở

Nếu bạn không muốn sử dụng phương pháp Kéo và Thả, bạn có thể sử dụng menu ngữ cảnh WinZip [nhấp chuột phải]. Để thực hiện việc này, nhấp chuột phải vào thư mục bạn muốn Zip và chọn một trong các tùy chọn Thêm vào tệp Zip

Ví dụ: giả sử cấu trúc thư mục của c. \level1\level2\level3 tồn tại và bạn muốn duy trì cấu trúc thư mục level2\level3 cùng với các tệp. Bạn có thể làm như sau

  1. Mở một cửa sổ thư mục và nhấp chuột phải vào thư mục level2
  2. Từ menu con WinZip, chọn Thêm vào tệp Zip
  3. Nhấp vào Thêm

Tệp Zip kết quả sẽ duy trì cấu trúc tệp/thư mục cấp 2 và sẽ bao gồm các thư mục con bên dưới

Trong Python, bạn có thể nén và giải nén tệp, tôi. e. , nén tệp thành tệp ZIP và giải nén tệp ZIP bằng mô-đun zipfile

  • zipfile — Làm việc với kho lưu trữ ZIP — Python 3. 10. 2 tài liệu

Ngoài ra, bạn có thể dễ dàng nén một thư mục [thư mục] và giải nén tệp ZIP bằng

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
2 và
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
3 của mô-đun Shutil

  • Shutil - Thao tác lưu trữ — Thao tác tệp cấp cao — Python 3. 10. 2 tài liệu

Cả hai đều có trong thư viện chuẩn nên không cần cài đặt thêm

Bài viết này mô tả các nội dung sau

  • Zip một thư mục [thư mục].
    shutil.make_archive['archive_shutil_base', format='zip',
                        root_dir='.', base_dir='dir_zip']
    
    4
  • Giải nén một tập tin.
    shutil.make_archive['archive_shutil_base', format='zip',
                        root_dir='.', base_dir='dir_zip']
    
    5
  • Khái niệm cơ bản về mô-đun zipfile.
    shutil.make_archive['archive_shutil_base', format='zip',
                        root_dir='.', base_dir='dir_zip']
    
    6 đối tượng
  • Nén các tệp riêng lẻ thành một tệp ZIP
  • Thêm các tệp khác vào tệp ZIP hiện có
  • Kiểm tra danh sách các tệp trong tệp ZIP
  • Trích xuất các tệp riêng lẻ từ tệp ZIP
  • Đọc tệp trong tệp ZIP
  • ZIP có mật khẩu [mã hóa và giải mã]

Liên kết được tài trợ

Zip một thư mục [thư mục].
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
4

Bạn có thể nén một thư mục [folder], tôi. e. , tạo tệp ZIP từ thư mục có

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
4

  • đóng cửa. make_archive[] — Thao tác tệp cấp cao — Python 3. 10. 2 tài liệu

Tham số đầu tiên

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
9 là đường dẫn không có phần mở rộng của tệp ZIP cần tạo, tham số thứ hai
shutil.unpack_archive['archive_shutil.zip', 'dir_out']
0 là định dạng lưu trữ [
shutil.unpack_archive['archive_shutil.zip', 'dir_out']
1,
shutil.unpack_archive['archive_shutil.zip', 'dir_out']
2,
shutil.unpack_archive['archive_shutil.zip', 'dir_out']
3,
shutil.unpack_archive['archive_shutil.zip', 'dir_out']
4,
shutil.unpack_archive['archive_shutil.zip', 'dir_out']
5], và tham số thứ ba
shutil.unpack_archive['archive_shutil.zip', 'dir_out']
6 là đường dẫn của thư mục cần nén

Ví dụ: giả sử có một thư mục

shutil.unpack_archive['archive_shutil.zip', 'dir_out']
7 với cấu trúc sau trong thư mục hiện tại

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
6

Nén thư mục này thành tệp ZIP

shutil.unpack_archive['archive_shutil.zip', 'dir_out']
8 trong thư mục hiện tại

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
8

nguồn. zip_archive. py

Trong trường hợp này, bản thân thư mục được chỉ định

shutil.unpack_archive['archive_shutil.zip', 'dir_out']
7 không được bao gồm trong
shutil.unpack_archive['archive_shutil.zip', 'dir_out']
8

Nếu bạn muốn bao gồm chính thư mục đó, hãy chỉ định đường dẫn của thư mục trên của thư mục đích trong tham số thứ ba

shutil.unpack_archive['archive_shutil.zip', 'dir_out']
6 và đường dẫn tương đối của thư mục đích từ
shutil.unpack_archive['archive_shutil.zip', 'dir_out']
6 trong tham số thứ tư
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
33

  • Shutil - Lưu trữ ví dụ với base_dir — Thao tác tệp cấp cao — Python 3. 10. 2 tài liệu

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']

nguồn. zip_archive. py

Xem phần tiếp theo để biết kết quả giải nén

Giải nén một tập tin.
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
5

Bạn có thể giải nén một tập tin, tôi. e. , trích xuất tất cả nội dung của tệp ZIP bằng

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
5

  • đóng cửa. unpack_archive[] — Thao tác tệp cấp cao — Python 3. 10. 2 tài liệu

Tham số đầu tiên

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
36 là đường dẫn của tệp ZIP và tham số thứ hai
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
37 là đường dẫn của thư mục đích nơi lưu trữ được trích xuất

________số 8

nguồn. zip_archive. py

Nó được trích xuất như sau

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
3

Mặc dù tài liệu không chỉ định nó, nhưng nó dường như tạo một thư mục mới ngay cả khi không tồn tại

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
37 [đã xác nhận trong Python 3. 9. 9]

Tệp ZIP được tạo bởi

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
4 với
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
33 được trích xuất như sau

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
4

nguồn. zip_archive. py

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
5

Khái niệm cơ bản về mô-đun zipfile.
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
6 đối tượng

Mô-đun zipfile cung cấp lớp

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
6 để tạo, đọc, viết, nối thêm và liệt kê tệp ZIP

  • zipfile - Đối tượng ZipFile — Làm việc với kho lưu trữ ZIP — Python 3. 10. 2 tài liệu

Các đối tượng

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
6 được tạo bằng cách chỉ định tham số đầu tiên
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
44 [đường dẫn của tệp ZIP] và tham số thứ hai
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
45 [đọc
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
46, ghi
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
47, nối thêm
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
48, v.v. ] cho hàm tạo
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
49

Đối tượng

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
6 cần được đóng bằng phương thức
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
51, nhưng nếu bạn sử dụng câu lệnh
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
52, nó sẽ tự động được đóng khi khối kết thúc

Cách sử dụng cũng tương tự như đọc ghi file có sẵn hàm

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
53 như chỉ định chế độ và sử dụng câu lệnh
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
52

  • 7. Đầu vào và đầu ra - Đọc và ghi tệp — Python 3. 10. 2 tài liệu

Các ví dụ cụ thể được mô tả trong các phần sau

Nén các tệp riêng lẻ thành một tệp ZIP

Để nén các tệp riêng lẻ thành tệp ZIP, hãy tạo một đối tượng

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
6 mới và thêm các tệp bạn muốn nén bằng phương pháp
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
56

Với

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
49, chỉ định đường dẫn của tệp ZIP mới được tạo làm tham số đầu tiên
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
44 và đặt tham số thứ hai
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
45 thành
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
47 [ghi]

Ở chế độ ghi, bạn cũng có thể chỉ định phương pháp nén và mức độ với các tham số

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
61 và
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
62

Phương pháp nén

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
61 như sau;

  • shutil.make_archive['archive_shutil_base', format='zip',
                        root_dir='.', base_dir='dir_zip']
    
    64. Không nén [mặc định]
  • shutil.make_archive['archive_shutil_base', format='zip',
                        root_dir='.', base_dir='dir_zip']
    
    65. Nén ZIP thông thường
  • shutil.make_archive['archive_shutil_base', format='zip',
                        root_dir='.', base_dir='dir_zip']
    
    66. nén BZIP2
  • shutil.make_archive['archive_shutil_base', format='zip',
                        root_dir='.', base_dir='dir_zip']
    
    67. Nén LZMA

Đối với

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
68, mức nén
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
62 tương ứng với
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
50 của
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
51. Mặc định là
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
52 [
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
53]

level là mức nén – một số nguyên từ 0 đến 9 hoặc -1. Giá trị 1 [Z_BEST_SPEED] là nhanh nhất và tạo ra ít nén nhất, trong khi giá trị 9 [Z_BEST_COMPRESSION] là chậm nhất và tạo ra nhiều nén nhất. 0 [Z_NO_COMPRESSION] không nén. Giá trị mặc định là -1 [Z_DEFAULT_COMPRESSION]. Z_DEFAULT_COMPRESSION thể hiện sự thỏa hiệp mặc định giữa tốc độ và độ nén [hiện tại tương đương với cấp 6]. zlib. nénobj[] — Nén tương thích với gzip — Python 3. 10. 2 tài liệu

  • trăn/zipfile. py lúc 3. 10 · trăn/cpython

Phương thức

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
56 của đối tượng
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
6 ghi tệp có tên tham số đầu tiên là
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
36 vào một tệp ZIP, cung cấp cho nó tên lưu trữ [= tên trong ZIP] tham số thứ hai là
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
57. Nếu bỏ qua
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
57,
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
36 được sử dụng làm tên lưu trữ. Bạn có thể chỉ định cấu trúc thư mục cho
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
57

  • zipfile. Tệp Zip. write[] — Làm việc với kho lưu trữ ZIP — Python 3. 10. 2 tài liệu

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
6

nguồn. zip_archive. py

Bạn cũng có thể chọn phương thức nén và cấp độ cho từng tệp bằng cách chỉ định

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
71 và
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
62 trong phương thức
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
56

Thêm các tệp khác vào tệp ZIP hiện có

Để thêm các tệp khác vào tệp ZIP hiện có, với

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
49, hãy đặt tham số đầu tiên
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
44 thành đường dẫn của tệp ZIP hiện có và tham số thứ hai
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
45 thành
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
48 [nối thêm]

Thêm các tệp hiện có

Bạn có thể thêm các tệp hiện có bằng phương thức

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
56 của đối tượng
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
6

Sau đây là một ví dụ về việc thêm

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
800 vào thư mục hiện tại. Đối số
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
57 bị bỏ qua

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
5

nguồn. zip_archive. py

Tạo và thêm một tệp mới

Bạn cũng có thể tạo một tệp mới và thêm nó. Sử dụng phương thức

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
53 của đối tượng
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
6 với chế độ chắp thêm [
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
48]

  • zipfile. Tệp Zip. open[] — Làm việc với kho lưu trữ ZIP — Python 3. 10. 2 tài liệu

Chỉ định đường dẫn của tệp mới tạo trong ZIP làm tham số đầu tiên và đặt tham số thứ hai

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
45 thành
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
47

Bạn có thể viết nội dung bằng phương thức

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
56 của đối tượng tệp đã mở

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
7

nguồn. zip_archive. py

Đối số của

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
56 nên được chỉ định là
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
809, không phải là
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
810. Để viết một văn bản, hãy sử dụng
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
811 hoặc chuyển đổi nó bằng phương pháp
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
812 của
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
810

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
80

nguồn. zip_archive. py

Một ví dụ về việc đọc một tệp trong ZIP với

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
53 của đối tượng
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
6 được mô tả sau

Liên kết được tài trợ

Kiểm tra danh sách các tệp trong tệp ZIP

Để kiểm tra nội dung của tệp ZIP hiện có, hãy tạo một đối tượng

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
6 với tham số đầu tiên là
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
44 là đường dẫn của tệp ZIP hiện có và tham số thứ hai là
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
45 là
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
46 [đã đọc]. Có thể bỏ qua
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
45 vì mặc định là
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
46

Bạn có thể lấy danh sách các mục đã lưu trữ bằng phương thức

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
822 của đối tượng
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
6

  • zipfile. Tệp Zip. namelist[] — Làm việc với kho lưu trữ ZIP — Python 3. 10. 2 tài liệu

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
81

nguồn. zip_archive. py

Như bạn có thể thấy từ kết quả trên, các tệp ZIP được tạo bằng

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
4 cũng liệt kê các thư mục riêng lẻ. Điều này cũng đúng với các tệp ZIP được nén bằng chức năng tiêu chuẩn của Finder trên máy Mac

Bạn có thể loại trừ các thư mục có khả năng hiểu danh sách

  • Danh sách hiểu trong Python

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
82

nguồn. zip_archive. py

Trích xuất các tệp riêng lẻ từ tệp ZIP

Để giải nén tệp ZIP, hãy tạo một đối tượng

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
6 ở chế độ đọc [
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
46, mặc định]

Nếu bạn chỉ muốn giải nén các tệp cụ thể, hãy sử dụng phương pháp

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
827

  • zipfile. Tệp Zip. extract[] — Làm việc với kho lưu trữ ZIP — Python 3. 10. 2 tài liệu

Tham số đầu tiên

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
828 là tên file cần giải nén [bao gồm cả thư mục trong file zip] và tham số thứ hai
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
829 là đường dẫn đến thư mục cần giải nén

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
83

nguồn. zip_archive. py

Nếu bạn muốn giải nén tất cả các tệp, hãy sử dụng phương pháp

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
830. Chỉ định đường dẫn của thư mục để trích xuất làm đối số đầu tiên
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
829

  • zipfile. Tệp Zip. extractall[] — Làm việc với kho lưu trữ ZIP — Python 3. 10. 2 tài liệu

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
84

nguồn. zip_archive. py

Trong cả hai trường hợp, nếu bỏ qua

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
829, các tệp sẽ được trích xuất vào thư mục hiện tại. Mặc dù tài liệu không chỉ định nó, nhưng nó dường như tạo một thư mục mới ngay cả khi không tồn tại
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
829 [đã xác nhận trong Python 3. 9. 9]

Đọc tệp trong tệp ZIP

Bạn có thể đọc trực tiếp các tệp trong tệp ZIP

Tạo một đối tượng

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
6 ở chế độ đọc [mặc định] và mở tệp bên trong bằng phương thức
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
53

Đối số đầu tiên của

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
53 là tên của tệp trong ZIP [có thể bao gồm thư mục]. Đối số thứ hai
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
45 có thể được bỏ qua vì giá trị mặc định là
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
46 [đã đọc]

Có thể đọc nội dung bằng phương pháp

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
839 của đối tượng tệp đã mở. Một chuỗi byte
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
809 được trả về, có thể được chuyển đổi thành chuỗi
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
810 bằng phương thức
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
842

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
85

nguồn. zip_archive. py

Ngoài

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
839, có thể sử dụng
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
844 và
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
845 cũng như đối tượng tệp được mở bằng chức năng tích hợp sẵn
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
53

  • 7. Đầu vào và đầu ra - Đọc và ghi tệp — Python 3. 10. 2 tài liệu

ZIP có mật khẩu [mã hóa và giải mã]

Mô-đun zipfile có thể giải mã ZIP bằng mật khẩu [ZIP được mã hóa], nhưng nó không thể mã hóa ZIP

Nó hỗ trợ giải mã các tệp được mã hóa trong kho lưu trữ ZIP, nhưng hiện tại nó không thể tạo tệp được mã hóa. Quá trình giải mã cực kỳ chậm vì nó được triển khai bằng Python gốc chứ không phải C. zipfile — Làm việc với kho lưu trữ ZIP — Python 3. 10. 2 tài liệu

Ngoài ra, AES không được hỗ trợ

Mô-đun zipfile từ thư viện chuẩn Python chỉ hỗ trợ các tệp zip được mã hóa CRC32 [xem tại đây. http. //hg. con trăn. org/cpython/file/71adf21421d9/Lib/zipfile. py#l420 ]. zip - Python giải nén tệp được mã hóa AES-128

Cả

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
2 và
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
3 đều không hỗ trợ mã hóa và giải mã

dây kéo

Pyzipper được giới thiệu trong Stack Overflow ở trên hỗ trợ mã hóa và giải mã AES, đồng thời có thể được sử dụng theo cách tương tự như zipfile

  • danifus/pyzipper. Phần mở rộng zipfile Python

Để tạo tệp ZIP bằng mật khẩu, hãy chỉ định

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
849 bằng
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
850 và đặt mật khẩu bằng phương thức
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
851. Lưu ý rằng bạn cần chỉ định mật khẩu bằng chuỗi byte
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
809

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
86

nguồn. zip_archive. py

Sau đây là một ví dụ về giải nén tệp ZIP bằng mật khẩu

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
87

nguồn. zip_archive. py

Tất nhiên nếu sai mật khẩu thì không thể giải mã được

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
88

nguồn. zip_archive. py

Mô-đun zipfile cũng cho phép bạn chỉ định mật khẩu, nhưng như đã đề cập ở trên, nó không hỗ trợ AES

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
89

nguồn. zip_archive. py

Thực hiện lệnh với
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
853

Bạn cũng có thể sử dụng

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
853 nếu zipfile hoặc pyzipper không hoạt động, nhưng lệnh vẫn có thể xử lý nó

  • quy trình con. run[] — Quản lý quy trình con — Python 3. 10. 2 tài liệu

Sử dụng lệnh

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
855 của 7-zip [yêu cầu cài đặt] làm ví dụ

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
0

nguồn. zip_archive. py

Tương đương với các lệnh sau.

shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
856 là bản mở rộng. Lưu ý rằng
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
857 và
shutil.make_archive['archive_shutil_base', format='zip',
                    root_dir='.', base_dir='dir_zip']
858 không yêu cầu khoảng trắng

Chủ Đề