2017-09-29 166 views
0

我想让Python解压缩我的文件夹中的所有文件,但我希望它将它们保存在与zip文件夹同名的新解压缩文件夹中他们来自哪里。如何在Python中解压缩文件,但保留Zip文件夹

例如,如果我的文件夹“大都会”有两个拉链文件夹:

folder1.zip:文件1

folder2.zip:文件2

我想这些文件落得如下:

气象\文件夹1 \文件1

气象\文件夹2 \文件2

目前,该方案使这两个文件在会见文件夹:

会见\文件1和文件2

#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") 
+1

@ PM2Ring至少用python 3.4,'extractall'创建目录如果不存在。 –

+0

,它甚至可以用超过1个目录深度:'zip_handler.extractall(“foo/bar/spam”)'(这里不相关,但仍然:)) –

回答

2

首先,解决您的dir_name表达,因为它目前不正确,因为它传递的第一个字母工作usplitext而不是采取的u

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

基数,然后,通过额外的path参数extractall

zipfile.ZipFile.extractall(path=dir_name) 

如果dir_name不存在,则创建(与Python 3.4测试)。

相关问题