我正在开发一个python脚本,它会自动更新Calibre,因为它不包含autoupdater并且每周更新一次。我的脚本下载了可移植的zip文件,然后应该提取zip文件的特定子文件夹(我不需要所有文件)。
到目前为止我所拥有的:
os.system("7z x install.zip -y -r -oc:\\\"Program Files (x86)\\\"Calibre2");
这适用于除下载我需要的特定子目录之外的所有内容。有什么建议吗?
答案 0 :(得分:3)
如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")
应该没问题
答案 1 :(得分: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]))