2017-04-04 5 views
0

私はzipファイルを持っています。このファイルはメモリにio.BytesIOバッファとして保存されています。 zipファイル内で、私はディレクトリの1つにシンボリックリンクを作成する必要があります。Pythonでzipfileにシンボリックリンクを作成するには

以下は私が今まで試したことですが(similar questionのSOから)、トップレベルにしたいのでリンクを作成していません。

リンクに作成する:ルート/スケール/ 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に/などのコンテンツを持っています代わりにhypervisor/esx65/pika_3_5を使用してください。

+0

Windowsでこれを抽出しようとしていますか? Unixのシンボリックリンクはウィンドウ上では機能しません。ターゲットとしてファイルとして表示されます。 – mata

答えて

1

あなたは

ソースファイルとdst SRCシンボリックリンクファイルです
import os; os.symlink(src, dst) 

としてシンボリックリンクを作成するために、osモジュールを使用することができます。

+0

これは、(メモリ内の)zipファイルではなく、ディスク上にシンボリックリンクを作成します。 – ViFI

関連する問題