gpt4 book ai didi

python - 在Python3中从zip存档中提取特定文件夹的内容

转载 作者:行者123 更新时间:2023-11-30 21:50:41 24 4
gpt4 key购买 nike

我有一个 zip 存档,其内部结构如下所示:

file.zip
|
--- foo/
|
--- bar/
|
--- file1.txt
|
--- dir/
|
--- file2.txt

我想使用 python3 将 bar 的内容提取到输出目录,得到如下所示的内容:

output-dir/
|
--- file1.txt
|
--- dir/
|
--- file2.txt

但是,当我运行 bar 下面的代码时,它的内容被提取到 output-dir

import zipfile

archive = zipfile.ZipFile('path/to/file.zip')

for archive_item in archive.namelist():
if archive_item.startswith('bar/'):
archive.extract(archive_item, 'path/to/output-dir')

我该如何解决这个问题?谢谢!

最佳答案

不要使用 ZipFile.extract,而是按顺序使用 ZipFile.openopenshutil.copyfileobj将文件准确放在您想要的位置,使用路径操作创建您需要的输出路径。

archive = zipfile.ZipFile('path/to/file.zip')
PREFIX = 'bar/'
out = pathlib.Path('path/to/output-dir')
for archive_item in archive.namelist():
if archive_item.startswith(PREFIX):
# strip out the leading prefix then join to `out`, note that you
# may want to add some securing against path traversal if the zip
# file comes from an untrusted source
destpath = out.joinpath(archive_item[len(PREFIX):])
# make sure destination directory exists otherwise `open` will fail
os.makedirs(destpath.parent, exist_ok=True)
with archive.open(archive_item) as source,
open(destpath, 'wb') as dest:
shutil.copyfileobj(source, dest)

类似的东西。

关于python - 在Python3中从zip存档中提取特定文件夹的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60300922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com