Инструментальный тест занимает много времени, чтобы закончить

Как создать zip-архив структуры каталогов в Python?

В скрипте Python

В Python 2.7+, shutil имеет функцию make_archive.

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

Здесь zipped архив будет называться zipfile_name.zip. Если base_dir находится дальше от root_dir, он будет исключать файлы, не находящиеся в base_dir, но все же архивировать файлы в родительских каталогах до root_dir.

У меня была проблема тестируя это на Cygwin с 2.7 - он хочет аргумент root_dir, для cwd:

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

Использование Python из оболочки

Вы можете сделать это с помощью Python из оболочки, также используя zipfile:

$ python -m zipfile -c zipname sourcedir

Где zipname - имя целевого файла, который вы хотите (добавьте .zip, если вы этого хотите, он не будет делать это автоматически), а sourcedir - путь к каталогу.

Закрепление Python (или просто не требуется родительский каталог):

Если вы пытаетесь закрепить пакет python с помощью __init__.py и __main__.py, и вам не нужен родительский каталог, это

$ python -m zipfile -c zipname sourcedir/*

И

$ python zipname

будет запускать пакет. (Обратите внимание, что вы не можете запускать подпакеты в качестве точки входа из архива с застежкой-молнией.)

Закрепление приложения Python:

Если у вас есть python3.5 + и вы хотите закройте пакет Python, используйте zipapp :

$ python -m zipapp myapp
$ python myapp.pyz
0
задан David Kennedy 4 March 2019 в 22:28
поделиться