微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python 从源递归解压缩到另一个目标

如何解决Python 从源递归解压缩到另一个目标

我不知道如何解决这个简单的任务,我想递归地将所有 zip/rar 文件从源文件提取到另一个目标文件夹,重新创建同一棵树。目前我已经创建了源文件夹树和目标文件夹树,但我不知道如何在目标旁边提取

谢谢... 斯卡基

# required patool and pyunpack
import errno
import os,zipfile,pyunpack
from tkinter import Tk,filedialog,PhotoImage

root = Tk() # pointing root to Tk() to use it as Tk() in program.
root.withdraw() # Hides small tkinter window.
root.attributes('-topmost',True)
basis_folder = filedialog.askdirectory(title='Select source folder Compressed files')
extrac_folder = filedialog.askdirectory(title='Select destination folder for Un-Compressed') 

for root,dirs,files in os.walk(basis_folder):
    for filename in files:
        if filename.endswith(".rar") :
            print('RAR:'+os.path.join(root,filename))
        elif filename.endswith(".zip"):
            print('ZIP:'+os.path.join(root,filename))
        name = os.path.splitext(os.path.basename(filename))[0]
        print (name)
        if filename.endswith(".rar") or filename.endswith(".zip"):
            try:
                arch = pyunpack.Archive(os.path.join(root,filename))
                # os.mkdir(name)
                arch.extractall(directory=root)
                # os.remove(os.path.join(root,filename))
            except Exception as e:
                print("ERROR: BAD ARCHIVE "+os.path.join(root,filename))
                print(e)
                try:
                    # os.path.join(root,filename)os.remove(filename)
                    pass
                except OSError as e: # this would be "except OSError,e:" before Python 2.6
                    if e.errno != errno.ENOENT: # errno.ENOENT = no such file or directory
                        raise # re-raise exception if a different error occured

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。