2016-03-03 136 views
2

我有一個腳本可以創建包含符號鏈接的dirs文件的zip文件。我發現 很驚訝地發現zipfiles壓縮了鏈接的目標鏈接,而不是鏈接本身,這正是我想要的和 的預期。任何人都知道如何獲得zipfile壓縮鏈接?使用python zipfile歸檔符號鏈接

回答

3

zipfile似乎不支持存儲符號鏈接。將它們存儲在ZIP中的方式實際上不是格式and is only available as a custom extension in some implementations的一部分。特別是,Info-ZIP的實現支持它們,所以你可以delegate to it instead。確保你的解壓縮軟件可以處理這些檔案 - 正如我所說的,這個功能不是標準化的。

+0

謝謝。我結束了一個子進程,使用帶有--symlinks的命令行zip。它比python zipfile lib慢得多,但它確實支持符號鏈接。 –

+0

@LarryMartell Info-ZIP有一個共享庫以及一個獨立的可執行文件,可以爲你節省一些週期。雖然我找不到任何文檔。 –

0

有可能讓zipfile存儲符號鏈接,而不是文件本身。有關示例,請參見here。腳本的相關部分在zipinfo中存儲符號鏈接屬性:

zipInfo = zipfile.ZipInfo(archiveRoot) 
zipInfo.create_system = 3 
# long type of hex val of '0xA1ED0000L', 
# say, symlink attr magic... 
zipInfo.external_attr = 2716663808L 
zipOut.writestr(zipInfo, os.readlink(fullPath))