Архивирование пакета приложений Mac с Python - PullRequest
1 голос
/ 22 февраля 2012

Я пишу скрипт на Python (2.7) для сборки и распространения моего приложения Mac (10.7). Я хочу сжать его для распространения, но следующий код приводит к пустому сжатому приложению (0 байт):

from zipfile import ZipFile

with ZipFile(zip_file_dist_path, 'w') as dist_zip:
    dist_zip.write(archived_app, os.path.basename(archived_app))

Это обрабатывает его как файл, когда мне нужно рассматривать его как каталог? Если я заархивирую его, пройдя по дереву каталогов пакета приложения и записав каждый файл в zip-архив, распакует ли он все необходимые метаданные файловой системы (т.е. получу ли я правильное приложение)?

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

Я переключился с ZipFile на shutil.make_archive, так как он заботится о рекурсии каталога, и мне не нужно более детальное управление:

import shutil

zip_file_path = shutil.make_archive(zip_file_build_path, 'zip', root_dir = dist_dir);
1 голос
/ 22 февраля 2012

ZipFile только один раз заархивирует один файл в архив.

Вы можете найти, как добавить папки в zip-файл здесь: Добавление папок в zip-файл с использованием python

...