【发布时间】:2021-05-25 13:49:00
【问题描述】:
我有一个内部文件夹结构为的 zip 文件:
CODE
`-- CODE
`-- CODE
`-- CODE
|-- 2019
| |-- file1.txt
| `-- file2.txt
|-- 2020
| `-- file3.txt
`-- 2021
|-- file4.txt
`-- file5.txt
我想解压缩文件夹结构中的文件,如下所示:
CODE
|-- 2019
| |-- file1.txt
| `-- file2.txt
|-- 2020
| `-- file3.txt
`-- 2021
|-- file4.txt
`-- file5.txt
我可以对其进行硬编码,但是,因为它是一个重复请求,我是否可以通过编程方式处理它以仅解压缩其中包含文件的文件夹。
我当前的代码是:
def unzipfiles(incoming_path):
for path,subdirs,files in os.walk(incoming_path):
for name in files:
if(name.endswith('.zip')):
with zipfile.ZipFile(os.path.join(incoming_path,name), 'r') as zip_ref:
for file in zip_ref.namelist():
out_path=os.path.join(incoming_path,file)
out_path=out_path.replace('CODE/','')
if(out_path[:-1]!=incoming_path):
zip_ref.extract(file,out_path)
但是,它无法正常工作,并且创建的文件夹比 zip 文件中的文件夹多。
【问题讨论】:
-
如果我理解正确的话,你想解压一个文件,然后删除其中的任何目录,它只包含另一个目录?
-
没错。
-
我可以假设目录名称是重复的,和/或包含数据的第一个文件夹是年号吗?换句话说,文件夹
CODE的命名是否与zipfile名称以及所有其他子目录一致? -
是的。我创建了一个对我有用的新功能。我已将代码粘贴到答案中。
标签: python python-3.x zipfile