关于文件的压缩与解压

时间:2022-05-06
本文章向大家介绍关于文件的压缩与解压,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
 1 #coding:utf-8
 2 import tarfile
 3 import zipfile
 4 import rarfile
 5 import os
 6 import shutil
 7 class parsePackage:
 8     def __init__(self):
 9         self.funcMap={'tar':self.untar,
10                       'zip':self.unzip,
11                       'rar':self.unrar,
12                       'gz':self.untar}
13     def parse(self,fname,dirs):
14         try:
15             pkg_type = fname.split('.')[-1]
16             if self.funcMap.get(pkg_type) is None:
17                 print  "%s is not exist", pkg_type
18                 return -1
19             self.funcMap[pkg_type](fname, dirs)
20         except Exception ,e:
21             print e
22         return dirs #解压文件路径
23 
24     def untar(self,fname, dirs):
25         try:
26             t = tarfile.open(fname)
27             t.extractall(path=dirs)
28         except Exception ,e:
29             print  e
30 
31 
32     def unzip(self,fname, dirs):
33         try:
34             f = zipfile.ZipFile(fname, 'r')
35             for file in f.namelist():
36                 print dirs.split('/')[-1] + '/'
37                 f.extract(file, dirs.split('/')[-1] + '/')
38         except Exception ,e:
39             print e
40 
41     def unrar(self,fname, dirs):
42         try:
43             file = rarfile.RarFile(fname) 
44             file.extractall(dirs)  
45         except Exception,e:
46             print e
47 
48     def tar(self,fname):
49         t = tarfile.open(fname + ".tar.gz", "w:gz")
50         for root, dir, files in os.walk(fname):
51             print root, dir, files
52             for file in files:
53                 fullpath = os.path.join(root, file)
54                 t.add(fullpath)
55         t.close()
56         root_dest_path=os.path.join('./tools/static',fname.split('/')[-1])+'.tar.gz'
57         shutil.move(fname + ".tar.gz", root_dest_path)
58 
59         return root_dest_path