1
#!/usr/bin/env python
2
#-*- coding:utf-8 -*-
3
#$Id: p0920.py 166 2010-06-29 03:46:56Z xylz $
4
5
'''
6
This is a 'python' study plan for xylz.
7
Copyright (C)2010 xylz (www.imxylz.info)
8
'''
9
10
import gzip
11
import os
12
13
def compress (dst,f):
14
print "compress %s to %s" % (f,dst)
15
f_out = gzip.open(dst,'wb')
16
f_in = open(f,'rb')
17
f_out.writelines(f_in)
18
f_in.close()
19
f_out.close()
20
in_size = os.path.getsize(f)
21
out_size = os.path.getsize(dst)
22
print "source size %d bytes, target size %d bytes, %d%%" % (in_size,out_size,(out_size*100/in_size))
23
24
def decompress (f,dst):
25
print "decompress %s to %s" % (f,dst)
26
f_in = gzip.open(f,'rb')
27
f_out = open(dst,'wb')
28
f_out.writelines(f_in)
29
f_in.close()
30
f_out.close()
31
in_size = os.path.getsize(f)
32
out_size = os.path.getsize(dst)
33
print "source size %d bytes, target size %d bytes, %d%%" % (in_size,out_size,(in_size*100/out_size))
34
35
36
if __name__ == '__main__':
37
import sys
38
if len(sys.argv)<3 or ('c'!= sys.argv[1] and 'x'!= sys.argv[1]):
39
print "Usage: %s <c|x> <file> [destfile]" % (sys.argv[0],)
40
sys.exit(0)
41
src_file = sys.argv[2]
42
dest_file = None
43
if len(sys.argv)>3:
44
dest_file = sys.argv[3]
45
46
47
if 'c' == sys.argv[1]:
48
if not dest_file:
49
dest_file = src_file+".gz"
50
compress(dest_file,src_file)
51
52
else:
53
if not dest_file:
54
dest_file = src_file[:src_file.index('.gz')] #raise exception if file error
55
decompress(src_file,dest_file)
56
57
58
59
下面是一次執(zhí)行的輸出結(jié)果:
2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59














