我正在研究一個python腳本,它將自動更新Calibre,因爲它不包含autoupdater並每週更新一次。我的腳本下載便攜式壓縮文件,然後應該提取zip文件的特定子文件夾(我不需要所有文件)。只提取特定的子文件夾7zip
我有什麼至今:
os.system("7z x install.zip -y -r -oc:\\\"Program Files (x86)\\\"Calibre2");
這適用於一切,除了下載特定的子目錄我需要的。有什麼建議麼?
我正在研究一個python腳本,它將自動更新Calibre,因爲它不包含autoupdater並每週更新一次。我的腳本下載便攜式壓縮文件,然後應該提取zip文件的特定子文件夾(我不需要所有文件)。只提取特定的子文件夾7zip
我有什麼至今:
os.system("7z x install.zip -y -r -oc:\\\"Program Files (x86)\\\"Calibre2");
這適用於一切,除了下載特定的子目錄我需要的。有什麼建議麼?
正如How to partially extract a folder from a 7z file using powershell給出:
os.system("7z x install.zip subfolder -y -r -oc:\\\"Program Files (x86)\\\"Calibre2")
應該確定你
以下是我爲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]))
點是使用7zip的.. 。 – Jacobm001 2012-01-14 21:38:54
@ Jacobm001。我在[最新口徑版本](http://sourceforge.net/projects/calibre/files/)上測試了我的腳本,並且它工作正常(只需要幾秒鐘就可以提取128Mb'/ Calibre Portable/Calibre'夾)。所以7zip是不需要的。 – ekhumoro 2012-01-15 01:51:23