繁体   English   中英

使用 ZipFile/Python 递归解压缩文件夹

[英]Recursively unzipping a folder with ZipFile/Python

我正在尝试编写一个可以解压缩这样的脚本:

  • 曾祖父.zip
    • 祖父.zip
      • 父亲.zip
        • 子.txt

到目前为止我所拥有的:

from os import listdir
import os
from zipfile import ZipFile, is_zipfile

#Current Directory  
mypath = '.'


def extractor(path):
    for file in listdir(path):
        if(is_zipfile(file)):
            print(file)
            with ZipFile(file,'r') as zipObj:
                path = os.path.splitext(file)[0]
                zipObj.extractall(path)
                extractor(path)

extractor(mypath)

我可以解压缩曾祖父,当我以祖父为路径再次调用提取器时。 它不会进入 if 语句。 尽管如此,我可以列出祖父的内容。

用这两行替换extractor(path)

  • os.chdir(path)
  • extractor('.')

所以你的代码变成:

from os import listdir
import os
from zipfile import ZipFile, is_zipfile

#Current Directory  
mypath = '.'


def extractor(path):
    for file in listdir(path):
        if(is_zipfile(file)):
            print(file)
            with ZipFile(file,'r') as zipObj:
                path = os.path.splitext(file)[0]
                zipObj.extractall(path)
                os.chdir(path)
                extractor('.')

extractor(mypath)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM