提取特定子文件夹 7zip
我正在写一个Python脚本,目的是自动更新Calibre,因为它没有自动更新的功能,而且每周都会更新。我的脚本会下载一个便携版的压缩文件,然后需要从这个压缩文件中提取一个特定的子文件夹(我不需要里面的所有文件)。
我现在的代码是:
os.system("7z x install.zip -y -r -oc:\\\"Program Files (x86)\\\"Calibre2");
这段代码对其他所有文件都有效,但就是无法下载我需要的那个特定子目录。有没有什么建议?
2 个回答
0
下面是我之前给的一个关于tar文件的类似回答的压缩版本,链接在这里:答案。
使用方法:
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]))
3
在这个链接中,提到了一种使用PowerShell从7z文件中部分提取文件夹的方法:
os.system("7z x install.zip subfolder -y -r -oc:\\\"Program Files (x86)\\\"Calibre2")
这样做应该对你有帮助。