2012-02-22 49 views
1

我正在編寫一個Python(2.7)腳本來構建和分發我的Mac(10.7)應用程序。我想壓縮它的分佈,但下面的代碼導致一個空壓縮應用程序(0字節):使用Python壓縮Mac應用程序包

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

我從ZipFile切換到shutil.make_archive,因爲它需要的目錄遞歸的關懷,我不需要任何的細粒度控制:

import shutil 

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

似乎有沒有unarchive ... – uchuugaka 2016-01-14 07:02:41

+0

@uchuugaka你不能使用常規ZipFile類來解壓縮嗎? – Dov 2016-01-14 16:10:20

+0

似乎根本無法在Mac .app包中工作,失去了可執行權限。 – uchuugaka 2016-01-15 05:41:01