仅提取特定子文件夹7zip

时间:2012-01-14 21:00:47

标签: python 7zip

我正在开发一个python脚本,它会自动更新Calibre,因为它不包含autoupdater并且每周更新一次。我的脚本下载了可移植的zip文件,然后应该提取zip文件的特定子文件夹(我不需要所有文件)。

到目前为止我所拥有的:

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

这适用于除下载我需要的特定子目录之外的所有内容。有什么建议吗?

2 个答案:

答案 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]))