用Python压缩Mac应用程序包

用Python压缩Mac应用程序包,python,macos,zip,bundle,Python,Macos,Zip,Bundle,我正在编写一个Python2.7脚本来构建和分发我的Mac10.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)) 当我需要将其视为目录时,是否将其视为文件?如果我通过遍历应用程序

我正在编写一个Python2.7脚本来构建和分发我的Mac10.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来压缩它,它是否会使用所有正确的文件系统元数据(即,我是否会返回正确的应用程序)进行解压缩?

ZipFile一次只将一个文件压缩到存档文件中

您可以在此处找到如何将文件夹添加到zip文件:

ZipFile一次只能将一个文件压缩到存档中

您可以在此处找到如何将文件夹添加到zip文件:

我从ZipFile切换到shutil.make_archive,因为它负责目录递归,我不需要任何更细粒度的控制:

import shutil

zip_file_path = shutil.make_archive(zip_file_build_path, 'zip', root_dir = dist_dir);
我从ZipFile切换到shutil.make_archive,因为它负责目录递归,我不需要任何更细粒度的控制:

import shutil

zip_file_path = shutil.make_archive(zip_file_build_path, 'zip', root_dir = dist_dir);

@Uchiugaka您不能使用常规ZipFile类来解压吗?在Mac.app捆绑包上似乎根本不起作用,失去了可执行权限。@Uchiugaka我在文档中看到了shutil.unpack\u存档。这对你有用吗?不,没有。我试过了。工作的是os.systemunzip-qo sourceFilePath-d tempDirPath,其中源路径和目标路径是在连接字符串中预先设置的。@uchuugaka您不能使用常规ZipFile类来解压缩吗?在Mac.app捆绑包上似乎根本不起作用,失去可执行权限。@Uchiugaka我在文档中看到shutil.unpack\u存档文件。这对你有用吗?不,没有。我试过了。所做的工作是os.systemunzip-qo sourceFilePath-d tempDirPath,其中源路径和目标路径是在连接字符串中预先设置的。