将具有子文件夹的zip文件夹中的文件解压缩到单个文件夹中

时间:2016-06-07 09:32:54

标签: python file

我有一个包含多个子文件夹的zip文件夹。 testfolder.zip包含给定格式的文件

testfolder/files 1,2,3
testfolder/Test1folder/files 5,6
testfolder/Test2folder/files 7,8

我需要输出

  

testfolder / files 1,2,3,4,5,6,7,8

我能够将文件夹与其子文件夹解压缩,但不能以所需的方式解压缩。

这是我到目前为止的尝试

import glob
import os
import zipfile
folder = 'E:/Test'
extension = '.zip'
zip_files = glob.glob(folder + extension)
for zip_filename in zip_files:
    dir_name = os.path.splitext(zip_filename)[0]
    os.mkdir(dir_name)
    zip_handler = zipfile.ZipFile(zip_filename, "r")
    zip_handler.extractall(dir_name)

任何帮助都将非常感谢。谢谢。

1 个答案:

答案 0 :(得分:1)

替换:

zip_handler.extractall(dir_name)

有这样的事情:

for z in zip_handler.infolist():
    zip_handler.extract(z, dir_name)

这应该是一次取存档中的每个文件并将其解压缩到目录中的同一点。

更新: 显然它仍然相对提取它们。通过在原始代码段中添加几行代码解决了这个问题:

for p, d, f in os.walk(folder, topdown= False):
for n in f:
    os.rename(os.path.join(p, n), os.path.join(dir_name, n))
for n in d:
    os.rmdir(os.path.join(p, n))    

这会将文件移动到基​​本文件夹中并删除剩余的所有空文件夹。这是我尝试过的。