如何在 Python 中解压缩文件但保留 Zip 文件夹

How to Unzip files in Python but Keep Zip Folder

提问人:skrhee 提问时间:9/30/2017 更新时间:9/30/2017 访问量:898

问:

我正在尝试让 Python 解压缩我文件夹中的所有文件,但我希望它将它们保存在新解压缩的文件夹中,该文件夹与它们来自的 zip 文件夹同名。

例如,如果我的文件夹“Met”有两个 zip 文件夹:

文件夹 1 .zip:文件 1

文件夹 2.zip:文件2

我希望文件最终如下:

Met\folder1\file1

Met\folder2\file2

目前,该程序将这两个文件都放在 Met 文件夹中:

Met\file1 和 file2

#Unzip all zip files
zip_files = glob.glob(r"C:\Users\simon.rhee\Desktop\Met\*.zip")

i = 1
for u in zip_files:
    dir_name = os.path.splitext(u[0])
    zip_handler = zipfile.ZipFile(u,"r")
    zip_handler.extractall()
    print("Unzipping File #",i,"Complete")
python 目录 zip

评论

1赞 Jean-François Fabre 9/30/2017
@PM2Ring至少在 python 3.4 中,如果不存在,请创建目录。extractall
0赞 Jean-François Fabre 9/30/2017
它甚至可以与超过 1 个目录深度一起使用:(这里不相关,但仍然:))zip_handler.extractall("foo/bar/spam")

答:

3赞 Jean-François Fabre 9/30/2017 #1

首先,修复您的表达式,因为它当前无法正常工作,因为它传递了 to 的第一个字母,而不是取dir_nameusplitextu

dir_name = os.path.splitext(u)[0]

然后,将额外的参数传递给pathextractall

zipfile.ZipFile.extractall(path=dir_name)

如果不存在,则创建它(使用 Python 3.4 进行测试)。dir_name