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()
将路径下的压缩文件进行批量解压操作
最新推荐文章于 2021-07-30 17:42:50 发布