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