我有一个包含多个子文件夹的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)
任何帮助都将非常感谢。谢谢。
答案 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))
这会将文件移动到基本文件夹中并删除剩余的所有空文件夹。这是我尝试过的。