2017-04-04 110 views
0

我有一個zipfile,它存儲在內存中作爲io.BytesIO緩衝區。在zipfile中,我需要爲其中一個目錄創建一個符號鏈接。如何在python中創建zipfile中的符號鏈接

以下是我迄今爲止所嘗試過的(從SO上的這個similar question開始),但它並沒有像我想要的那樣創建鏈接。

鏈路要被建立:根/秤/ LIB /管理程序/ KVM/pika_3_5

鏈接名稱: '鼠兔'

環線位置:頂級

現有的zip文件:數據[「egg_buffer」]

with zipfile.ZipFile(data['egg_buffer'], 'a') as zip_buffer: 
    dest = 'root/scale/lib/hypervisor/kvm/pika_3_5' 
    info = zipfile.ZipInfo('pika') 
    info.external_attr |= 0120000 << 16L # symlink file type 
    info.compress_type = zipfile.ZIP_STORED 
    zip_buffer.writestr(info, dest) 
data['egg_buffer'].seek(os.SEEK_SET) 

其實這是建立在根級別文件名爲「鼠」,但它不是一個符號鏈接,其內容與文本根/規模/ lib目錄/管理程序/ esx65/pika_3_5。

+0

您是否試圖在Windows上解壓縮? Unix符號鏈接不能在Windows上工作,它們會以目標文件的形式顯示爲內容。 – mata

回答

1

可以使用os模塊創建符號鏈接爲

import os; os.symlink(src, dst) 

哪裏是src源文件和DST是符號鏈接文件。

+0

這會在磁盤上創建符號鏈接,而不是在(在內存中)zip文件中。 – ViFI