如何在不使用 python 保留目录的情况下提取文件夹中的所有 .zip 扩展名?

Posted

技术标签:

【中文标题】如何在不使用 python 保留目录的情况下提取文件夹中的所有 .zip 扩展名?【英文标题】:How can I extract all .zip extension in a folder without retaining directory using python? 【发布时间】:2018-09-25 03:12:14 【问题描述】:

这是我的代码,我不知道如何循环文件夹中的每个 .zip,请帮助我:我希望将 5 个 zip 文件的所有内容提取到一个文件夹中,不包括其目录名

import os
import shutil
import zipfile
my_dir = r"C:\\Users\\Guest\\Desktop\\OJT\\scanner\\samples_raw"

my_zip = r"C:\\Users\\Guest\\Desktop\\OJT\\samples\\001-100.zip"
with zipfile.ZipFile(my_zip) as zip_file:
zip_file.setpassword(b"virus")
for member in zip_file.namelist():
    filename = os.path.basename(member)
    # skip directories
    if not filename:
        continue

    # copy file (taken from zipfile's extract)
    source = zip_file.open(member)
    target = file(os.path.join(my_dir, filename), "wb")
    with source, target:
        shutil.copyfileobj(source, target)

【问题讨论】:

【参考方案1】:

重复问题,请参考以下链接。

How to extract zip file recursively in Pythonn

【讨论】:

【参考方案2】:

您正在寻找的是glob。可以这样使用:

#<snip>
import glob

#assuming all your zip files are in the directory below.
for my_zip in glob.glob(r"C:\\Users\\Guest\\Desktop\\OJT\\samples\\*.zip"):
    with zipfile.ZipFile(my_zip) as zip_file:
        zip_file.setpassword(b"virus")
        for member in zip_file.namelist():
            #<snip> rest of your code here.

【讨论】:

等一下,它将 6 个文件夹提取到 6 个文件中,而不是 zip 文件的内容 这给了我 6 个提取的文件,我不知道为什么,而不是 6 个文件夹的内容 如果你有多个文件夹,你可以试试glob.glob(r"C:\\Users\\Guest\\Desktop\\OJT\\scanner\\samples_raw\\**\\*.zip"。这将扫描 samples_raw zip 文件中的目录。 不,我的意思是将 6 个 zip 文件提取到 .file 中,但未提取 zip 文件的内容 看看这个问题 - ***.com/questions/3451111/unzipping-files-in-python

以上是关于如何在不使用 python 保留目录的情况下提取文件夹中的所有 .zip 扩展名?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不推动我的情况下从GitHub中提取更改?

如何在不添加目录层次结构的情况下使用 Python 将文件添加到 tarfile?

如何在不支持 tk 的情况下构建 Python3?

使用 Python - 如何在不超过原始图像大小的情况下调整裁剪图像的大小以满足纵横比

如何在不增加宽度的情况下向文本区域添加填充?

在不知道其公式的情况下在python中提取并绘制曲线的一阶导数?