2012-01-14 77 views
2

我正在研究一個python腳本,它將自動更新Calibre,因爲它不包含autoupdater並每週更新一次。我的腳本下載便攜式壓縮文件,然後應該提取zip文件的特定子文件夾(我不需要所有文件)。只提取特定的子文件夾7zip

我有什麼至今:

os.system("7z x install.zip -y -r -oc:\\\"Program Files (x86)\\\"Calibre2");

這適用於一切,除了下載特定的子目錄我需要的。有什麼建議麼?

回答

0

以下是我爲tar文件提供的類似answer的zip版本。

用法:

unzipdir.py path/to/zipfile zip/folder [output/folder] 

腳本:

import sys, os 
from zipfile import ZipFile 

def get_members(zip, prefix): 
    if not prefix.endswith('/'): 
     prefix += '/' 
    offset = len(prefix) 
    for zipinfo in zip.infolist(): 
     name = zipinfo.filename 
     if len(name) > offset: 
      zipinfo.filename = name[offset:] 
      yield zipinfo 

args = sys.argv[1:] 

if len(args): 
    zip = ZipFile(args[0]) 
    path = args[2] if len(args) > 2 else '.' 
    zip.extractall(path, get_members(zip, args[1])) 
+0

點是使用7zip的.. 。 – Jacobm001 2012-01-14 21:38:54

+0

@ Jacobm001。我在[最新口徑版本](http://sourceforge.net/projects/calibre/files/)上測試了我的腳本,並且它工作正常(只需要幾秒鐘就可以提取128Mb'/ Calibre Portable/Calibre'夾)。所以7zip是不需要的。 – ekhumoro 2012-01-15 01:51:23

相關問題