Hướng dẫn how do you make a zip file in python? - làm thế nào để bạn tạo một tệp zip trong python?

Đã hỏi 12 năm, 11 tháng trước 12 years, 11 months ago

Đã xem 639k lần 639k times

Làm thế nào tôi có thể tạo một kho lưu trữ zip của một cấu trúc thư mục trong Python?

Hướng dẫn how do you make a zip file in python? - làm thế nào để bạn tạo một tệp zip trong python?

Tomerikoo

16.8K16 Huy hiệu vàng39 Huy hiệu bạc57 Huy hiệu đồng16 gold badges39 silver badges57 bronze badges

Đã hỏi ngày 6 tháng 12 năm 2009 lúc 11:12Dec 6, 2009 at 11:12

4

Cách dễ nhất là sử dụng

from shutil import make_archive
make_archive(
  'zipfile_name', 
  'zip',           # the archive format - or tar, bztar, gztar 
  root_dir=None,   # root for archive - current working dir if None
  base_dir=None)   # start archiving from here - cwd if None too
9. Nó hỗ trợ cả định dạng zip và tar.

import shutil
shutil.make_archive(output_filename, 'zip', dir_name)

Nếu bạn cần làm một cái gì đó phức tạp hơn so với việc hạ gục toàn bộ thư mục (chẳng hạn như bỏ qua một số tệp nhất định), thì bạn sẽ cần đào vào mô -đun

make_archive('zipfile_name', 'zip', root_dir='.')
0 như những người khác đã đề xuất.

Hướng dẫn how do you make a zip file in python? - làm thế nào để bạn tạo một tệp zip trong python?

Phượng Hoàng

6.8784 Huy hiệu vàng37 Huy hiệu bạc44 Huy hiệu đồng4 gold badges37 silver badges44 bronze badges

Đã trả lời ngày 3 tháng 9 năm 2014 lúc 17:26Sep 3, 2014 at 17:26

Crdaviscrdaviscrdavis

19.6K3 Huy hiệu vàng13 Huy hiệu bạc9 Huy hiệu đồng3 gold badges13 silver badges9 bronze badges

22

Như những người khác đã chỉ ra, bạn nên sử dụng zipfile. Tài liệu cho bạn biết những chức năng nào có sẵn, nhưng không thực sự giải thích cách bạn có thể sử dụng chúng để zip toàn bộ thư mục. Tôi nghĩ rằng dễ dàng nhất để giải thích với một số mã ví dụ:

import os
import zipfile
    
def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file), 
                       os.path.relpath(os.path.join(root, file), 
                                       os.path.join(path, '..')))

with zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipdir('tmp/', zipf)

Nico Schlömer

49,7K25 Huy hiệu vàng186 Huy hiệu bạc230 Huy hiệu đồng25 gold badges186 silver badges230 bronze badges

Đã trả lời ngày 6 tháng 12 năm 2009 lúc 11:23Dec 6, 2009 at 11:23

Mark Byersmark ByersMark Byers

787K188 Huy hiệu vàng1553 Huy hiệu bạc1440 Huy hiệu đồng188 gold badges1553 silver badges1440 bronze badges

15

Để thêm nội dung của

make_archive('zipfile_name', 'zip', root_dir='.')
1 vào tệp zip mới, bao gồm tất cả các tệp và thư mục con:

import os
import zipfile

zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("mydirectory"):
    zf.write(dirname)
    for filename in files:
        zf.write(os.path.join(dirname, filename))
zf.close()

Đã trả lời ngày 6 tháng 12 năm 2009 lúc 11:28Dec 6, 2009 at 11:28

Ben Jamesben JamesBen James

Huy hiệu vàng 117K2626 gold badges192 silver badges155 bronze badges

5

Làm thế nào tôi có thể tạo một kho lưu trữ zip của một cấu trúc thư mục trong Python?

Trong kịch bản Python

Trong Python 2.7+,

make_archive('zipfile_name', 'zip', root_dir='.')
2 có chức năng
make_archive('zipfile_name', 'zip', root_dir='.')
3.

from shutil import make_archive
make_archive(
  'zipfile_name', 
  'zip',           # the archive format - or tar, bztar, gztar 
  root_dir=None,   # root for archive - current working dir if None
  base_dir=None)   # start archiving from here - cwd if None too

Ở đây, kho lưu trữ bị kéo dài sẽ được đặt tên là

make_archive('zipfile_name', 'zip', root_dir='.')
4. Nếu
make_archive('zipfile_name', 'zip', root_dir='.')
5 ở xa hơn so với
make_archive('zipfile_name', 'zip', root_dir='.')
6, nó sẽ loại trừ các tệp không có trong
make_archive('zipfile_name', 'zip', root_dir='.')
5, nhưng vẫn lưu trữ các tệp trong cha mẹ cho đến
make_archive('zipfile_name', 'zip', root_dir='.')
6.

Tôi đã có một vấn đề kiểm tra vấn đề này trên Cygwin với 2.7 - nó muốn một đối số root_dir, cho CWD:

make_archive('zipfile_name', 'zip', root_dir='.')

Sử dụng Python từ vỏ

Bạn có thể làm điều này với Python từ vỏ cũng bằng cách sử dụng mô -đun

make_archive('zipfile_name', 'zip', root_dir='.')
0:

$ python -m zipfile -c zipname sourcedir

Trong đó

$ python -m zipfile -c zipname sourcedir
0 là tên của tệp đích bạn muốn (thêm
$ python -m zipfile -c zipname sourcedir
1 nếu bạn muốn, nó sẽ không tự động thực hiện) và SourcedIR là đường dẫn đến thư mục.

Zipping Up Python (hoặc không chỉ muốn cha mẹ):

Nếu bạn đang cố gắng tăng cường gói Python với

$ python -m zipfile -c zipname sourcedir
2 và
$ python -m zipfile -c zipname sourcedir
3 và bạn không muốn cha mẹ, thì đó là

$ python -m zipfile -c zipname sourcedir/*

$ python zipname

Sẽ chạy gói. (Lưu ý rằng bạn không thể chạy các gói con dưới dạng điểm nhập từ kho lưu trữ có khóa.)

Zipping a Python Ứng dụng:

Nếu bạn có Python3.5+và đặc biệt muốn tăng cường gói Python, hãy sử dụng ZipApp:

$ python -m zipapp myapp
$ python myapp.pyz

Đã trả lời ngày 31 tháng 3 năm 2016 lúc 18:57Mar 31, 2016 at 18:57

Hướng dẫn how do you make a zip file in python? - làm thế nào để bạn tạo một tệp zip trong python?

0

Hàm này sẽ đệ quy để tăng cường một cây thư mục, nén các tệp và ghi các tên tệp tương đối chính xác trong kho lưu trữ. Các mục lưu trữ giống như các mục được tạo bởi

$ python -m zipfile -c zipname sourcedir
4.

import os
import zipfile
def make_zipfile(output_filename, source_dir):
    relroot = os.path.abspath(os.path.join(source_dir, os.pardir))
    with zipfile.ZipFile(output_filename, "w", zipfile.ZIP_DEFLATED) as zip:
        for root, dirs, files in os.walk(source_dir):
            # add directory (needed for empty dirs)
            zip.write(root, os.path.relpath(root, relroot))
            for file in files:
                filename = os.path.join(root, file)
                if os.path.isfile(filename): # regular files only
                    arcname = os.path.join(os.path.relpath(root, relroot), file)
                    zip.write(filename, arcname)

Đã trả lời ngày 13 tháng 6 năm 2013 lúc 6:57Jun 13, 2013 at 6:57

Hướng dẫn how do you make a zip file in python? - làm thế nào để bạn tạo một tệp zip trong python?

George V. Reillygeorge V. ReillyGeorge V. Reilly

15.3k7 Huy hiệu vàng41 Huy hiệu bạc38 Huy hiệu đồng7 gold badges41 silver badges38 bronze badges

1

Sử dụng SOWLIL, là một phần của bộ thư viện tiêu chuẩn Python. Sử dụng SHOTIL rất đơn giản (xem mã bên dưới):

  • Arg đầu tiên: Tên tệp của tệp zip/tar kết quả,
  • Arg thứ 2: zip/tar,
  • Arg thứ 3: dir_name

Code:

import os
import zipfile
    
def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file), 
                       os.path.relpath(os.path.join(root, file), 
                                       os.path.join(path, '..')))

with zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipdir('tmp/', zipf)
0

Qback

3.7653 huy hiệu vàng22 Huy hiệu bạc35 Huy hiệu đồng3 gold badges22 silver badges35 bronze badges

Đã trả lời ngày 12 tháng 10 năm 2018 lúc 9:46Oct 12, 2018 at 9:46

Vadiraj s jvadiraj s jVadiraj S J

62110 Huy hiệu bạc17 Huy hiệu đồng10 silver badges17 bronze badges

2

Python hiện đại (3.6+) sử dụng mô-đun

$ python -m zipfile -c zipname sourcedir
5 để xử lý các đường dẫn giống như OOP và
$ python -m zipfile -c zipname sourcedir
6 để làm toàn cầu đệ quy. Theo như tôi có thể nói, điều này tương đương với câu trả lời của George V. Reilly: Zips với nén, phần tử hàng đầu là một thư mục, giữ cho các dirs trống, sử dụng các đường dẫn tương đối.

import os
import zipfile
    
def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file), 
                       os.path.relpath(os.path.join(root, file), 
                                       os.path.join(path, '..')))

with zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipdir('tmp/', zipf)
1

Lưu ý: Như các gợi ý loại tùy chọn chỉ ra,

$ python -m zipfile -c zipname sourcedir
7 không thể là đối tượng đường dẫn (sẽ được sửa trong 3.6.2+).

Đã trả lời ngày 31 tháng 3 năm 2017 lúc 13:01Mar 31, 2017 at 13:01

Hướng dẫn how do you make a zip file in python? - làm thế nào để bạn tạo một tệp zip trong python?

monk-timemonk-timemonk-time

1.88312 Huy hiệu bạc17 Huy hiệu đồng12 silver badges17 bronze badges

1

Với mô -đun Python 3.9,

$ python -m zipfile -c zipname sourcedir
5 &
make_archive('zipfile_name', 'zip', root_dir='.')
0, bạn có thể tạo một tệp zip từ bất cứ đâu trong hệ thống.

import os
import zipfile
    
def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file), 
                       os.path.relpath(os.path.join(root, file), 
                                       os.path.join(path, '..')))

with zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipdir('tmp/', zipf)
2

Nó là gọn gàng, gõ và có ít mã hơn.

Đã trả lời ngày 17 tháng 8 năm 2021 lúc 12:05Aug 17, 2021 at 12:05

Hướng dẫn how do you make a zip file in python? - làm thế nào để bạn tạo một tệp zip trong python?

JD Solankijd SolankiJD Solanki

7406 Huy hiệu bạc15 Huy hiệu Đồng6 silver badges15 bronze badges

Để thêm nén vào tệp zip kết quả, hãy xem liên kết này.

Bạn cần phải thay đổi:

import os
import zipfile
    
def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file), 
                       os.path.relpath(os.path.join(root, file), 
                                       os.path.join(path, '..')))

with zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipdir('tmp/', zipf)
3

đến

import os
import zipfile
    
def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file), 
                       os.path.relpath(os.path.join(root, file), 
                                       os.path.join(path, '..')))

with zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipdir('tmp/', zipf)
4

Hướng dẫn how do you make a zip file in python? - làm thế nào để bạn tạo một tệp zip trong python?

Philshem

24.3K7 Huy hiệu vàng60 Huy hiệu bạc126 Huy hiệu đồng7 gold badges60 silver badges126 bronze badges

Đã trả lời ngày 27 tháng 4 năm 2013 lúc 17:14Apr 27, 2013 at 17:14

E Smithe SmithE Smith

1371 Huy hiệu bạc3 Huy hiệu đồng1 silver badge3 bronze badges

0

Tôi đã thực hiện một số thay đổi đối với mã được đưa ra bởi Mark Byers. Chức năng dưới đây cũng sẽ thêm các thư mục trống nếu bạn có chúng. Các ví dụ sẽ làm cho nó rõ ràng hơn đường dẫn được thêm vào zip.

import os
import zipfile
    
def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file), 
                       os.path.relpath(os.path.join(root, file), 
                                       os.path.join(path, '..')))

with zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipdir('tmp/', zipf)
5

Trên đây là một chức năng đơn giản nên làm việc cho các trường hợp đơn giản. Bạn có thể tìm thấy lớp thanh lịch hơn trong ý chính của tôi: https://gist.github.com/eccenux/17526123107CA0AC28E6

Đã trả lời ngày 10 tháng 6 năm 2013 lúc 9:28Jun 10, 2013 at 9:28

NuxnuxNux

8.6035 Huy hiệu vàng55 Huy hiệu bạc69 Huy hiệu Đồng5 gold badges55 silver badges69 bronze badges

3

Tôi có một ví dụ mã khác có thể giúp, sử dụng python3, pathlib và zipfile. Nó sẽ hoạt động trong bất kỳ hệ điều hành nào.

import os
import zipfile
    
def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file), 
                       os.path.relpath(os.path.join(root, file), 
                                       os.path.join(path, '..')))

with zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipdir('tmp/', zipf)
6

Đã trả lời ngày 2 tháng 10 năm 2015 lúc 10:03Oct 2, 2015 at 10:03

Để giữ lại hệ thống phân cấp thư mục theo thư mục phụ huynh để được lưu trữ:

import os
import zipfile
    
def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file), 
                       os.path.relpath(os.path.join(root, file), 
                                       os.path.join(path, '..')))

with zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipdir('tmp/', zipf)
7

Nếu bạn muốn, bạn có thể thay đổi điều này để sử dụng

$ python -m zipfile -c zipname sourcedir
5 để tìm thấy tệp.

Đã trả lời ngày 9 tháng 7 năm 2019 lúc 8:48Jul 9, 2019 at 8:48

Ryanjdillonryanjdillonryanjdillon

16.7K9 Huy hiệu vàng82 Huy hiệu bạc104 Huy hiệu đồng9 gold badges82 silver badges104 bronze badges

Nếu bạn muốn có một chức năng như thư mục nén của bất kỳ trình quản lý tệp đồ họa phổ biến nào bạn có thể sử dụng mã sau, nó sẽ sử dụng mô -đun ZipFile. Sử dụng mã này, bạn sẽ có tệp zip với đường dẫn làm thư mục gốc của nó.

import os
import zipfile
    
def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file), 
                       os.path.relpath(os.path.join(root, file), 
                                       os.path.join(path, '..')))

with zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipdir('tmp/', zipf)
8

Đã trả lời ngày 21 tháng 3 năm 2016 lúc 13:40Mar 21, 2016 at 13:40

VGe0rgeVGe0rgeVGe0rge

1.0103 huy hiệu vàng15 Huy hiệu bạc18 Huy hiệu đồng3 gold badges15 silver badges18 bronze badges

Vì vậy, nhiều câu trả lời ở đây và tôi hy vọng tôi có thể đóng góp với phiên bản của riêng mình, dựa trên câu trả lời ban đầu (nhân tiện), nhưng với góc nhìn đồ họa hơn, cũng sử dụng bối cảnh cho mỗi thiết lập

make_archive('zipfile_name', 'zip', root_dir='.')
0 và sắp xếp
$ python -m zipfile -c zipname sourcedir/*
2 có một đầu ra đặt hàng.

Có các thư mục này và các tệp chúng (trong số các thư mục khác), tôi muốn tạo một

$ python -m zipfile -c zipname sourcedir
1 cho mỗi thư mục
$ python -m zipfile -c zipname sourcedir/*
4:

import os
import zipfile
    
def zipdir(path, ziph):
    # ziph is zipfile handle
    for root, dirs, files in os.walk(path):
        for file in files:
            ziph.write(os.path.join(root, file), 
                       os.path.relpath(os.path.join(root, file), 
                                       os.path.join(path, '..')))

with zipfile.ZipFile('Python.zip', 'w', zipfile.ZIP_DEFLATED) as zipf:
    zipdir('tmp/', zipf)
9

Đây là những gì tôi đã áp dụng, với các nhận xét để hiểu rõ hơn về quy trình.

import os
import zipfile

zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("mydirectory"):
    zf.write(dirname)
    for filename in files:
        zf.write(os.path.join(dirname, filename))
zf.close()
0

Về cơ bản, đối với mỗi lần lặp trên

$ python -m zipfile -c zipname sourcedir/*
5, tôi đang mở bối cảnh cho thiết lập
make_archive('zipfile_name', 'zip', root_dir='.')
0 và sau đó, lặp lại trên
$ python -m zipfile -c zipname sourcedir/*
7, đây là một ____68 của các tệp từ thư mục
$ python -m zipfile -c zipname sourcedir/*
9, hình thành đường dẫn tương đối cho mỗi tệp dựa trên thư mục
$ python -m zipfile -c zipname sourcedir/*
9 hiện tại, đến bối cảnh
make_archive('zipfile_name', 'zip', root_dir='.')
0 đang chạy.

Và đầu ra được trình bày như thế này:

import os
import zipfile

zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("mydirectory"):
    zf.write(dirname)
    for filename in files:
        zf.write(os.path.join(dirname, filename))
zf.close()
1

Để xem nội dung của mỗi thư mục

$ python -m zipfile -c zipname sourcedir
1, bạn có thể sử dụng lệnh
$ python zipname
3:

import os
import zipfile

zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("mydirectory"):
    zf.write(dirname)
    for filename in files:
        zf.write(os.path.join(dirname, filename))
zf.close()
2

Đã trả lời ngày 5 tháng 9 năm 2019 lúc 13:10Sep 5, 2019 at 13:10

Ivanleonczivanleonczivanleoncz

8.2175 Huy hiệu vàng53 Huy hiệu bạc48 Huy hiệu đồng5 gold badges53 silver badges48 bronze badges

Bạn có thể muốn xem mô -đun

make_archive('zipfile_name', 'zip', root_dir='.')
0; Có tài liệu tại http://docs.python.org/l Library/zipfile.html.

Bạn cũng có thể muốn

$ python -m zipfile -c zipname sourcedir/*
2 lập chỉ mục cấu trúc thư mục.

Đã trả lời ngày 6 tháng 12 năm 2009 lúc 11:17Dec 6, 2009 at 11:17

Hướng dẫn how do you make a zip file in python? - làm thế nào để bạn tạo một tệp zip trong python?

me_andme_andme_and

14.8K7 Huy hiệu vàng61 Huy hiệu bạc96 Huy hiệu Đồng7 gold badges61 silver badges96 bronze badges

Dưới đây là một biến thể của câu trả lời được đưa ra bởi Nux phù hợp với tôi:

import os
import zipfile

zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("mydirectory"):
    zf.write(dirname)
    for filename in files:
        zf.write(os.path.join(dirname, filename))
zf.close()
3

Đã trả lời ngày 30 tháng 7 năm 2014 lúc 23:13Jul 30, 2014 at 23:13

M Katzm KatzM Katz

4.9283 Huy hiệu vàng41 Huy hiệu bạc64 Huy hiệu đồng3 gold badges41 silver badges64 bronze badges

Hãy thử cái dưới đây .it đã làm việc cho tôi..

import os
import zipfile

zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("mydirectory"):
    zf.write(dirname)
    for filename in files:
        zf.write(os.path.join(dirname, filename))
zf.close()
4

Đã trả lời ngày 23 tháng 4 năm 2015 lúc 11:18Apr 23, 2015 at 11:18

ChandrachandraChandra

1011 huy hiệu vàng3 Huy hiệu bạc12 Huy hiệu đồng1 gold badge3 silver badges12 bronze badges

Để cho linh hoạt hơn, ví dụ: Chọn Thư mục/Tệp theo tên Sử dụng:

import os
import zipfile

zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("mydirectory"):
    zf.write(dirname)
    for filename in files:
        zf.write(os.path.join(dirname, filename))
zf.close()
5

Cho một cây tập tin:

import os
import zipfile

zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("mydirectory"):
    zf.write(dirname)
    for filename in files:
        zf.write(os.path.join(dirname, filename))
zf.close()
6

Bạn có thể, ví dụ: Chỉ chọn

$ python zipname
6 và
$ python zipname
7:

import os
import zipfile

zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("mydirectory"):
    zf.write(dirname)
    for filename in files:
        zf.write(os.path.join(dirname, filename))
zf.close()
7

Hoặc chỉ

$ python zipname
8 trong thư mục gọi tập lệnh và thêm mọi thứ từ đó:

import os
import zipfile

zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("mydirectory"):
    zf.write(dirname)
    for filename in files:
        zf.write(os.path.join(dirname, filename))
zf.close()
8

Đã trả lời ngày 25 tháng 9 năm 2018 lúc 13:32Sep 25, 2018 at 13:32

pbnpbnpbn

2.2461 Huy hiệu vàng22 Huy hiệu bạc38 Huy hiệu đồng1 gold badge22 silver badges38 bronze badges

1

Giả sử bạn muốn zip tất cả các thư mục (thư mục phụ) trong thư mục hiện tại.

import os
import zipfile

zf = zipfile.ZipFile("myzipfile.zip", "w")
for dirname, subdirs, files in os.walk("mydirectory"):
    zf.write(dirname)
    for filename in files:
        zf.write(os.path.join(dirname, filename))
zf.close()
9

Uli Köhler

12.7K15 Huy hiệu vàng65 Huy hiệu bạc116 Huy hiệu đồng15 gold badges65 silver badges116 bronze badges

Đã trả lời ngày 9 tháng 4 năm 2019 lúc 8:25Apr 9, 2019 at 8:25

SushilinuxsushilinuxSushilinux

7007 Huy hiệu bạc21 Huy hiệu Đồng7 silver badges21 bronze badges

Zip một tệp hoặc một cây (một thư mục và các hướng phụ của nó).

from shutil import make_archive
make_archive(
  'zipfile_name', 
  'zip',           # the archive format - or tar, bztar, gztar 
  root_dir=None,   # root for archive - current working dir if None
  base_dir=None)   # start archiving from here - cwd if None too
0

Để nối vào một kho lưu trữ hiện có, Pass

$ python zipname
9, để tạo một kho lưu trữ mới
$ python -m zipapp myapp
$ python myapp.pyz
0 (mặc định ở trên). Vì vậy, giả sử bạn muốn gói 3 cây thư mục khác nhau trong cùng một kho lưu trữ.

from shutil import make_archive
make_archive(
  'zipfile_name', 
  'zip',           # the archive format - or tar, bztar, gztar 
  root_dir=None,   # root for archive - current working dir if None
  base_dir=None)   # start archiving from here - cwd if None too
1

Đã trả lời ngày 17 tháng 9 năm 2020 lúc 5:50Sep 17, 2020 at 5:50

Michael Ekokamichael EkokaMichael Ekoka

18.3k10 Huy hiệu vàng74 Huy hiệu bạc78 Huy hiệu đồng10 gold badges74 silver badges78 bronze badges

Một giải pháp sử dụng

$ python -m zipapp myapp
$ python myapp.pyz
1, độc lập với HĐH được sử dụng:

from shutil import make_archive
make_archive(
  'zipfile_name', 
  'zip',           # the archive format - or tar, bztar, gztar 
  root_dir=None,   # root for archive - current working dir if None
  base_dir=None)   # start archiving from here - cwd if None too
2

Đã trả lời ngày 5 tháng 1 năm 2021 lúc 9:09Jan 5, 2021 at 9:09

AlexalexAlex

2.2762 huy hiệu vàng27 Huy hiệu bạc40 Huy hiệu đồng2 gold badges27 silver badges40 bronze badges

Cách rõ ràng để đi với Shutil, như câu trả lời hàng đầu thứ hai nói như vậy, nhưng nếu bạn vẫn muốn đi với Zipfile vì một số lý do, và nếu bạn gặp một số rắc rối khi làm điều đó (như ERR 13 trong Windows, v.v.) , Bạn có thể sử dụng bản sửa lỗi này:

from shutil import make_archive
make_archive(
  'zipfile_name', 
  'zip',           # the archive format - or tar, bztar, gztar 
  root_dir=None,   # root for archive - current working dir if None
  base_dir=None)   # start archiving from here - cwd if None too
3

Cái này lặp đi lặp lại một cách đệ quy thông qua mọi bộ lọc/tệp phụ trong thư mục đã cho của bạn và ghi chúng vào tệp zip thay vì cố gắng trực tiếp zip một thư mục.

Đã trả lời ngày 10 tháng 3 năm 2021 lúc 5:09Mar 10, 2021 at 5:09

Hướng dẫn how do you make a zip file in python? - làm thế nào để bạn tạo một tệp zip trong python?

Đây là một cách tiếp cận hiện đại, sử dụng pathlib và người quản lý bối cảnh. Đặt các tệp trực tiếp vào zip, thay vì trong một thư mục con.

from shutil import make_archive
make_archive(
  'zipfile_name', 
  'zip',           # the archive format - or tar, bztar, gztar 
  root_dir=None,   # root for archive - current working dir if None
  base_dir=None)   # start archiving from here - cwd if None too
4

Đã trả lời ngày 14 tháng 12 năm 2016 lúc 21:50Dec 14, 2016 at 21:50

Rùa là những con cuteturtles rất dễ thươngTurtles Are Cute

3.0266 huy hiệu vàng28 Huy hiệu bạc37 Huy hiệu đồng6 gold badges28 silver badges37 bronze badges

Tôi đã chuẩn bị một chức năng bằng cách hợp nhất giải pháp của Mark Byers với các bình luận của Reimund và Morten Zilmer (đường dẫn tương đối và bao gồm các thư mục trống). Như một thông lệ tốt nhất,

$ python -m zipapp myapp
$ python myapp.pyz
2 được sử dụng trong việc xây dựng tệp của Zipfile.

Hàm cũng chuẩn bị một tên tệp zip mặc định với tên thư mục bị nén và tiện ích mở rộng '.zip'. Do đó, nó chỉ hoạt động với một đối số: thư mục nguồn được nén.

from shutil import make_archive
make_archive(
  'zipfile_name', 
  'zip',           # the archive format - or tar, bztar, gztar 
  root_dir=None,   # root for archive - current working dir if None
  base_dir=None)   # start archiving from here - cwd if None too
5

Đã trả lời ngày 24 tháng 12 năm 2016 lúc 20:32Dec 24, 2016 at 20:32

Gürol Canbekgürol CanbekGürol Canbek

1.0181 Huy hiệu vàng14 Huy hiệu bạc20 Huy hiệu Đồng1 gold badge14 silver badges20 bronze badges

from shutil import make_archive
make_archive(
  'zipfile_name', 
  'zip',           # the archive format - or tar, bztar, gztar 
  root_dir=None,   # root for archive - current working dir if None
  base_dir=None)   # start archiving from here - cwd if None too
6

Đã trả lời ngày 15 tháng 6 năm 2017 lúc 6:24Jun 15, 2017 at 6:24

Hướng dẫn how do you make a zip file in python? - làm thế nào để bạn tạo một tệp zip trong python?

Chà, sau khi đọc các đề xuất, tôi đã đưa ra một cách rất giống nhau hoạt động với 2.7.x mà không tạo tên thư mục "hài hước" (tên giống như tuyệt đối) và sẽ chỉ tạo thư mục được chỉ định bên trong zip.

Hoặc chỉ trong trường hợp bạn cần zip của mình để chứa một thư mục bên trong với nội dung của thư mục đã chọn.

from shutil import make_archive
make_archive(
  'zipfile_name', 
  'zip',           # the archive format - or tar, bztar, gztar 
  root_dir=None,   # root for archive - current working dir if None
  base_dir=None)   # start archiving from here - cwd if None too
7

Đã trả lời ngày 15 tháng 8 năm 2018 lúc 21:27Aug 15, 2018 at 21:27

XedretxedretXedret

1.77317 Huy hiệu bạc24 Huy hiệu đồng17 silver badges24 bronze badges

Chức năng để tạo tệp zip.

from shutil import make_archive
make_archive(
  'zipfile_name', 
  'zip',           # the archive format - or tar, bztar, gztar 
  root_dir=None,   # root for archive - current working dir if None
  base_dir=None)   # start archiving from here - cwd if None too
8

Đã trả lời ngày 19 tháng 11 năm 2018 lúc 3:55Nov 19, 2018 at 3:55

Sushhsushhsushh

Huy hiệu bạc 11511 silver badge10 bronze badges

2

Tệp ZIP ở đâu trong Python?

Python: Làm thế nào để có được danh sách tất cả các tệp trong kho lưu trữ zip..
Zipfile.namelist () zipfile.namelist ().
từ ZipFile nhập zipfile.từ Zipfile nhập zipfile ..
Zipfile.InfoList () zipfile.infast ().
Zipfile.printDir () zipfile.printdir ().

Zip trong Python là gì?

Zip () trong Python, nó được sử dụng để ánh xạ chỉ số tương tự của nhiều container để chúng có thể được sử dụng chỉ bằng cách sử dụng một thực thể duy nhất.Cú pháp: ZIP (*iterators) Tham số: Python iterables hoặc container (danh sách, chuỗi, v.v.) Giá trị trả về: Trả về một đối tượng iterator duy nhất, có các giá trị được ánh xạ từ tất cả.hộp đựng.used to map the similar index of multiple containers so that they can be used just using a single entity. Syntax : zip(*iterators) Parameters : Python iterables or containers ( list, string etc ) Return Value : Returns a single iterator object, having mapped values from all the. containers.