''' python中的zlib模块提供了压缩和解压缩的方法 实现功能: 读取一个文件的内容,然后把该文件的内容以字符串的形式返回 然后对返回回来的字符串进行压缩处理,然后写入到另一个文件中 同时,也提供一个方法进行对压缩内容进行解压缩 '''
以下是我做的功能实现,代码中我写了详细的注释,详情如下:
SHOW_LOG = False
Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. >>> ================================ RESTART ================================ >>> 压缩内容:[b'xx9c5xcc1x0fxc2 x10x05xe0x9d_Axc2\ jx942U]\x1cx9ax18xf7xb6xc1BBxefx1ax8aAxfbxebxa5x1ao{_xde;6xbdxa3Exa0x8bwx1d!xecxf8xcc)PM/x08C4@xd8xb5uxfex86YxecOx16x04S?xf05fxe7=x8ex845 ]Oxd3xfdNx1ddxa5dExd8xc9xe3xf05x1bxe3xa4xcb2xa5xc4{xe8xb2xcexebxa8xb4xffxf7xe7`xdahrq#xe4xb6x10xaax90x8axb0xbb xb3Cxd0Trxf1x01"a1*'] b'#python zlib #Author : Hongten #MailTo : hongtenzone@foxmail.com #QQ : 648719819 #Blog : http://www.cnblogs.com/hongten #Create : 2013-08-18 #Version: 1.0' >>>
SHOW_LOG = True
Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. >>> ================================ RESTART ================================ >>> 打开文件:[c: est est.txt] 读取内容:[#python zlib ] 读取内容:[ ] 读取内容:[#Author : Hongten ] 读取内容:[#MailTo : hongtenzone@foxmail.com ] 读取内容:[#QQ : 648719819 ] 读取内容:[#Blog : http://www.cnblogs.com/hongten ] 读取内容:[#Create : 2013-08-18 ] 读取内容:[#Version: 1.0] 压缩内容:[#python zlib #Author : Hongten #MailTo : hongtenzone@foxmail.com #QQ : 648719819 #Blog : http://www.cnblogs.com/hongten #Create : 2013-08-18 #Version: 1.0] 打开文件:[c: estcom.txt] 写入内容:[b'xx9c5xcc1x0fxc2 x10x05xe0x9d_Axc2\ jx942U]\x1cx9ax18xf7xb6xc1BBxefx1ax8aAxfbxebxa5x1ao{_xde;6xbdxa3Exa0x8bwx1d!xecxf8xcc)PM/x08C4@xd8xb5uxfex86YxecOx16x04S?xf05fxe7=x8ex845 ]Oxd3xfdNx1ddxa5dExd8xc9xe3xf05x1bxe3xa4xcb2xa5xc4{xe8xb2xcexebxa8xb4xffxf7xe7`xdahrq#xe4xb6x10xaax90x8axb0xbb xb3Cxd0Trxf1x01"a1*'] 打开文件:[c: estcom.txt] 读取内容:[b'xx9c5xcc1x0fxc2 x10x05xe0x9d_Axc2\ jx942U]\x1cx9ax18xf7xb6xc1BBxefx1ax8aAxfbxebxa5x1ao{_xde;6xbdxa3Exa0x8bwx1d!xecxf8xcc)PM/x08C4@xd8xb5uxfex86YxecOx16x04S?xf05fxe7=x8ex845 ]Oxd3xfdNx1ddxa5dExd8xc9xe3xf05x1bxe3xa4xcb2xa5xc4{xe8xb2xcexebxa8xb4xffxf7xe7`xdahrq#xe4xb6x10xaax90x8axb0xbb xb3Cxd0Trxf1x01"a1*'] 压缩内容:[b'xx9c5xcc1x0fxc2 x10x05xe0x9d_Axc2\ jx942U]\x1cx9ax18xf7xb6xc1BBxefx1ax8aAxfbxebxa5x1ao{_xde;6xbdxa3Exa0x8bwx1d!xecxf8xcc)PM/x08C4@xd8xb5uxfex86YxecOx16x04S?xf05fxe7=x8ex845 ]Oxd3xfdNx1ddxa5dExd8xc9xe3xf05x1bxe3xa4xcb2xa5xc4{xe8xb2xcexebxa8xb4xffxf7xe7`xdahrq#xe4xb6x10xaax90x8axb0xbb xb3Cxd0Trxf1x01"a1*'] 解压缩内容:[b'xx9c5xcc1x0fxc2 x10x05xe0x9d_Axc2\ jx942U]\x1cx9ax18xf7xb6xc1BBxefx1ax8aAxfbxebxa5x1ao{_xde;6xbdxa3Exa0x8bwx1d!xecxf8xcc)PM/x08C4@xd8xb5uxfex86YxecOx16x04S?xf05fxe7=x8ex845 ]Oxd3xfdNx1ddxa5dExd8xc9xe3xf05x1bxe3xa4xcb2xa5xc4{xe8xb2xcexebxa8xb4xffxf7xe7`xdahrq#xe4xb6x10xaax90x8axb0xbb xb3Cxd0Trxf1x01"a1*'] b'#python zlib #Author : Hongten #MailTo : hongtenzone@foxmail.com #QQ : 648719819 #Blog : http://www.cnblogs.com/hongten #Create : 2013-08-18 #Version: 1.0' >>>
===============================================
代码部分:
===============================================
1 #python zlib 2 3 #Author : Hongten 4 #MailTo : hongtenzone@foxmail.com 5 #QQ : 648719819 6 #Blog : http://www.cnblogs.com/hongten 7 #Create : 2013-08-18 8 #Version: 1.0 9 10 ''' 11 python中的zlib模块提供了压缩和解压缩的方法 12 13 实现功能: 14 15 读取一个文件的内容,然后把该文件的内容以字符串的形式返回 16 然后对返回回来的字符串进行压缩处理,然后写入到另一个文件中 17 同时,也提供一个方法进行对压缩内容进行解压缩 18 ''' 19 20 import os 21 import zlib 22 23 #global var 24 #打印日志信息 25 SHOW_LOG = True 26 #原信息存放地址 27 ORI_PATH = '' 28 #压缩后文件存放地址 29 COM_PATH = '' 30 31 def get_content(path): 32 '''读取一个文件的内容,然后把该文件的内容以字符串的形式返回''' 33 if os.path.exists(path): 34 c = '' 35 if SHOW_LOG: 36 print('打开文件:[{}]'.format(path)) 37 with open(path, 'r+') as pf: 38 for line in pf: 39 if SHOW_LOG: 40 print('读取内容:[{}]'.format(line)) 41 c += line 42 return c 43 else: 44 print('the path [{}] is not exist!'.format(path)) 45 46 def compress_test(data): 47 '''对data进行压缩,然后返回压缩后的内容''' 48 if SHOW_LOG: 49 print('压缩内容:[{}]'.format(data)) 50 return zlib.compress(bytes(data, 'utf-8')) 51 52 def decompress_test(cdata): 53 '''对cdata进行解压缩,然后返回解压缩后的内容''' 54 if SHOW_LOG: 55 print('解压缩内容:[{}]'.format(cdata)) 56 return zlib.decompress(cdata) 57 58 def write_file(path, data): 59 '''把data写入到指定的文件''' 60 if os.path.exists(path): 61 if SHOW_LOG: 62 print('打开文件:[{}]'.format(path)) 63 with open(path, 'w+') as pf: 64 pf.write(str(data)) 65 if SHOW_LOG: 66 print('写入内容:[{}]'.format(data)) 67 pf.close() 68 else: 69 print('the path [{}] is not exist!'.format(path)) 70 71 def init(): 72 global SHOW_LOG 73 SHOW_LOG = True 74 global ORI_PATH 75 ORI_PATH = 'c:\test\test.txt' 76 global COM_PATH 77 COM_PATH = 'c:\test\com.txt' 78 79 80 def main(): 81 init() 82 #获取原信息 83 data = get_content(ORI_PATH) 84 #对内容进行压缩 85 cdata = compress_test(data) 86 #写入压缩文件内容 87 write_file(COM_PATH, cdata) 88 #获取压缩文件内容 89 c_data = get_content(COM_PATH) 90 print('压缩内容:[{}]'.format(c_data)) 91 #解压信息 92 dedata = decompress_test(cdata) 93 print(dedata) 94 95 96 if __name__ == '__main__': 97 main()