我现有的代码(一节)在这篇文章的底部有用。
我想要做的是从zip文件的目录中提取所有文件。不是zip文件的全部内容,只是zip内部的目录(/theme_files/
)中的文件。我已经导入了必要的库。
将文件从[filename].tpk/theme_files
提取到./workspace/[output]/
(.tpk
= .zip
)
theme_zip = zipfile.ZipFile(current_dir + "/themes/" + theme_name + ".tpk", 'r')
theme_zip.extractall(output_dir)
theme_zip.close()
答案 0 :(得分:0)
for item in (f for f in theme_zip.filelist if 'theme_files/' in f.filename):
theme_zip.extract(item, output_dir)
答案 1 :(得分:0)
您可以使用ZipFile.extractall()
并使用ZipFile.namelist()
返回的文件名的列表理解设置path
和members
args:
import zipfile
output_dir = './workspace/[output]/'
file = current_dir + "/themes/" + theme_name + ".tpk"
with zipfile.ZipFile(file, 'r') as f:
files = [n for n in f.namelist()
if n.startswith('/theme_files/') and not n.endswith('/')]
f.extractall(path=output_dir , members=files)
答案 2 :(得分:-1)
使用正则表达式搜索特定子文件夹中的文件名。 +按文件提取文件:
with open('<file-name>.zip', 'rb') as f:
zf = zipfile.ZipFile(f)
for file in [m.group() for m in (re.search(r'/theme/(.+)', file) for file in file_list) if m]:
zf.extract(file)