将路径下的压缩文件进行批量解压操作

import shutil
import os
import glob

class Ball(object):
    def __init__(self, source_dir, target_dir):
        self.source_dir = source_dir
        self.target_dir = target_dir
        self.boot_dir = source_dir
        self.pack = self.findpack()

    def listall(self, source=None):
        if source:
            self.source_dir = source
        os.chdir(self.source_dir)
        self.fileall = os.listdir()
        self.file_layout_dict = {self.file: os.path.splitext(self.file)[1][1:] for self.file in self.fileall}
        return self.file_layout_dict

    def unpack(self, file_name, pattern, remove=True):
        if pattern in ("zip", "tar", "gztar", "bztar", "xztar", 'gz'):
            shutil.unpack_archive(file_name, self.source_dir)
            if remove:
                os.remove(os.path.join(self.source_dir, file_name))

    def findpack(self,source=None):
        if source:
            self.source_dir = source
        self.pack = {}
        for root, dirs, files in os.walk(self.boot_dir):
            #print(root,dirs,files)
            for file in files:
                if os.path.splitext(file)[1][1:] in ("zip", "tar", "gztar", "bztar", "xztar", 'gz'):
                    self.pack[root] = file
        return self.pack

    def unpack_one(self):
        if self.pack:
            for key, value in self.pack.items():
                layout_dict = self.listall(source=key)
                if layout_dict:
                    for x, y in layout_dict.items():
                        #print(layout_dict,x,y)
                        self.unpack(x, y)
                else:
                    pass
        else:
            pass

    def unpack_iter(self):
        while self.pack:
            print("before:{}".format(self.pack))
            self.unpack_one()
            self.findpack()
            print(self.source_dir)
            print("after:{}".format(self.pack))



if __name__ == "__main__":
    hw_source_dir = '/Users/zhoujingwei/PycharmProjects/job3/tar/logs/hw/source'
    hw_target_dir = '/Users/zhoujingwei/PycharmProjects/job3/tar/logs/hw/source'
    hw = Ball(hw_source_dir, hw_target_dir)
    hw.unpack_iter()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值