python开发_zlib_完整版_博主推荐

'''
    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'x\x9c5\xcc1\x0f\xc2 \x10\x05\xe0\x9d_A\xc2\\\nj\x942U]\\\x1c\x9a\x18\xf7\xb6\xc1BB\xef\x1a\x8aA\xfb\xeb\xa5\x1ao{_\xde;6\xbd\xa3E\xa0\x8bw\x1d!\xec\xf8\xcc)PM/\x08C4@\xd8\xb5u\xfe\x86Y\xecO\x16\x04S?\xf05f\xe7=\x8e\x845\r]O\xd3\xfdN\x1dd\xa5dE\xd8\xc9\xe3\xf05\x1b\xe3\xa4\xcb2\xa5\xc4{\xe8\xb2\xce\xeb\xa8\xb4\xff\xf7\xe7`\xdahrq#\xe4\xb6\x10\xaa\x90\x8a\xb0\xbb\t\xb3C\xd0Tr\xf1\x01"a1*']
b'#python zlib\n\n#Author : Hongten\n#MailTo : hongtenzone@foxmail.com\n#QQ     : 648719819\n#Blog   : http://www.cnblogs.com/hongten\n#Create : 2013-08-18\n#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:\test\test.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:\test\com.txt]
写入内容:[b'x\x9c5\xcc1\x0f\xc2 \x10\x05\xe0\x9d_A\xc2\\\nj\x942U]\\\x1c\x9a\x18\xf7\xb6\xc1BB\xef\x1a\x8aA\xfb\xeb\xa5\x1ao{_\xde;6\xbd\xa3E\xa0\x8bw\x1d!\xec\xf8\xcc)PM/\x08C4@\xd8\xb5u\xfe\x86Y\xecO\x16\x04S?\xf05f\xe7=\x8e\x845\r]O\xd3\xfdN\x1dd\xa5dE\xd8\xc9\xe3\xf05\x1b\xe3\xa4\xcb2\xa5\xc4{\xe8\xb2\xce\xeb\xa8\xb4\xff\xf7\xe7`\xdahrq#\xe4\xb6\x10\xaa\x90\x8a\xb0\xbb\t\xb3C\xd0Tr\xf1\x01"a1*']
打开文件:[c:\test\com.txt]
读取内容:[b'x\x9c5\xcc1\x0f\xc2 \x10\x05\xe0\x9d_A\xc2\\\nj\x942U]\\\x1c\x9a\x18\xf7\xb6\xc1BB\xef\x1a\x8aA\xfb\xeb\xa5\x1ao{_\xde;6\xbd\xa3E\xa0\x8bw\x1d!\xec\xf8\xcc)PM/\x08C4@\xd8\xb5u\xfe\x86Y\xecO\x16\x04S?\xf05f\xe7=\x8e\x845\r]O\xd3\xfdN\x1dd\xa5dE\xd8\xc9\xe3\xf05\x1b\xe3\xa4\xcb2\xa5\xc4{\xe8\xb2\xce\xeb\xa8\xb4\xff\xf7\xe7`\xdahrq#\xe4\xb6\x10\xaa\x90\x8a\xb0\xbb\t\xb3C\xd0Tr\xf1\x01"a1*']
压缩内容:[b'x\x9c5\xcc1\x0f\xc2 \x10\x05\xe0\x9d_A\xc2\\\nj\x942U]\\\x1c\x9a\x18\xf7\xb6\xc1BB\xef\x1a\x8aA\xfb\xeb\xa5\x1ao{_\xde;6\xbd\xa3E\xa0\x8bw\x1d!\xec\xf8\xcc)PM/\x08C4@\xd8\xb5u\xfe\x86Y\xecO\x16\x04S?\xf05f\xe7=\x8e\x845\r]O\xd3\xfdN\x1dd\xa5dE\xd8\xc9\xe3\xf05\x1b\xe3\xa4\xcb2\xa5\xc4{\xe8\xb2\xce\xeb\xa8\xb4\xff\xf7\xe7`\xdahrq#\xe4\xb6\x10\xaa\x90\x8a\xb0\xbb\t\xb3C\xd0Tr\xf1\x01"a1*']
解压缩内容:[b'x\x9c5\xcc1\x0f\xc2 \x10\x05\xe0\x9d_A\xc2\\\nj\x942U]\\\x1c\x9a\x18\xf7\xb6\xc1BB\xef\x1a\x8aA\xfb\xeb\xa5\x1ao{_\xde;6\xbd\xa3E\xa0\x8bw\x1d!\xec\xf8\xcc)PM/\x08C4@\xd8\xb5u\xfe\x86Y\xecO\x16\x04S?\xf05f\xe7=\x8e\x845\r]O\xd3\xfdN\x1dd\xa5dE\xd8\xc9\xe3\xf05\x1b\xe3\xa4\xcb2\xa5\xc4{\xe8\xb2\xce\xeb\xa8\xb4\xff\xf7\xe7`\xdahrq#\xe4\xb6\x10\xaa\x90\x8a\xb0\xbb\t\xb3C\xd0Tr\xf1\x01"a1*']
b'#python zlib\n\n#Author : Hongten\n#MailTo : hongtenzone@foxmail.com\n#QQ     : 648719819\n#Blog   : http://www.cnblogs.com/hongten\n#Create : 2013-08-18\n#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()

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏蓝天

WGet使用指南

wget是一个从网络上自动下载文件的自由工具。它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理.

981
来自专栏解Bug之路

MySql协议讲解-事务协议篇

MySql事务协议主要是通过set autocommit、commit以及rollback这三个报文(命令)来实现的。

732
来自专栏CaiRui

Mysql-12-mysql的备份和恢复

1.数据库的备份   备份=拷贝加管理,防止数据的丢失同时记录用户的操作记录。其中最有效的备份是对IT架构进行备份。 原则: (1)数据库要定期备份,备份的周期...

2355
来自专栏python学习之旅

Python笔记(十二):操作数据库

(一)      前言     本文说明如何连接Oracle、MySQL、sqlserver,以及执行sql、获取查询结果等。 (二)      DB-API ...

3809
来自专栏醉生梦死

MySQL日志管理工具 mysqlbinlog

 [root@db02 data]# mysqlbinlog mysql_bin.000001

7062
来自专栏KaliArch

Linux系统进程CPU使用率限制脚本

1100
来自专栏云计算教程系列

如何在Ubuntu 14.04上使用memcached将NoSQL查询添加到MySQL

在许多优秀的文章中已经描述了使用memcached及其独立服务器实现与MySQL的一般概念,但是,作为独立服务器的memcached在MySQL客户端访问层之前...

982
来自专栏FreeBuf

Mariadb蜜罐 | 用改造过的服务端攻击客户端

上周发现了一个神奇的 Mariadb 服务端插件,可以用来做蜜罐,这里分享给大家。说是一个蜜罐,但在渗透中,也可以用来搞定某些服务器,你懂的。 简介 简单讲,M...

2265
来自专栏张善友的专栏

SQL Server : Browser服务

SQL Server : Browser服务是SQL Server 2005新增的,简单的说,如果一个物理服务器上面有多个SQL Server实例,那么为了确保...

2195
来自专栏程序你好

如何在SQL Server中将表从一个数据库复制到另一个数据库

1774

扫码关注云+社区

领取腾讯云代金券