如何在不使用 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 扩展名?的主要内容,如果未能解决你的问题,请参考以下文章
如何在不添加目录层次结构的情况下使用 Python 将文件添加到 tarfile?