'''
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'
>>>

===============================================

代码部分:

===============================================

 #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模块提供了压缩和解压缩的方法 实现功能: 读取一个文件的内容,然后把该文件的内容以字符串的形式返回
然后对返回回来的字符串进行压缩处理,然后写入到另一个文件中
同时,也提供一个方法进行对压缩内容进行解压缩
''' import os
import zlib #global var
#打印日志信息
SHOW_LOG = True
#原信息存放地址
ORI_PATH = ''
#压缩后文件存放地址
COM_PATH = '' def get_content(path):
'''读取一个文件的内容,然后把该文件的内容以字符串的形式返回'''
if os.path.exists(path):
c = ''
if SHOW_LOG:
print('打开文件:[{}]'.format(path))
with open(path, 'r+') as pf:
for line in pf:
if SHOW_LOG:
print('读取内容:[{}]'.format(line))
c += line
return c
else:
print('the path [{}] is not exist!'.format(path)) def compress_test(data):
'''对data进行压缩,然后返回压缩后的内容'''
if SHOW_LOG:
print('压缩内容:[{}]'.format(data))
return zlib.compress(bytes(data, 'utf-8')) def decompress_test(cdata):
'''对cdata进行解压缩,然后返回解压缩后的内容'''
if SHOW_LOG:
print('解压缩内容:[{}]'.format(cdata))
return zlib.decompress(cdata) def write_file(path, data):
'''把data写入到指定的文件'''
if os.path.exists(path):
if SHOW_LOG:
print('打开文件:[{}]'.format(path))
with open(path, 'w+') as pf:
pf.write(str(data))
if SHOW_LOG:
print('写入内容:[{}]'.format(data))
pf.close()
else:
print('the path [{}] is not exist!'.format(path)) def init():
global SHOW_LOG
SHOW_LOG = True
global ORI_PATH
ORI_PATH = 'c:\\test\\test.txt'
global COM_PATH
COM_PATH = 'c:\\test\\com.txt' def main():
init()
#获取原信息
data = get_content(ORI_PATH)
#对内容进行压缩
cdata = compress_test(data)
#写入压缩文件内容
write_file(COM_PATH, cdata)
#获取压缩文件内容
c_data = get_content(COM_PATH)
print('压缩内容:[{}]'.format(c_data))
#解压信息
dedata = decompress_test(cdata)
print(dedata) if __name__ == '__main__':
main()

python开发_zlib_完整版_博主推荐的更多相关文章

  1. python开发_shelve_完整版_博主推荐

    ''' python中的shelve模块,可以提供一些简单的数据操作 他和python中的dbm很相似. 区别如下: 都是以键值对的形式保存数据,不过在shelve模块中, key必须为字符串,而值可 ...

  2. python开发_xml.dom_解析XML文档_完整版_博主推荐

    在阅读之前,你需要了解一些xml.dom的一些理论知识,在这里你可以对xml.dom有一定的了解,如果你阅读完之后. 下面是我做的demo 运行效果: 解析的XML文件位置:c:\\test\\hon ...

  3. python开发_configparser_解析.ini配置文件工具_完整版_博主推荐

    # # 最近出了一趟差,是从20号去的,今天回来... # 就把最近学习的python内容给大家分享一下... # ''' 在python中,configparser模块提供了操作*.ini配置文件的 ...

  4. python开发_csv(Comma Separated Values)_逗号分隔值_常用导入导出格式_完整版_博主推荐

    ## 最近出了一趟差,是从20号去的,今天回来...# 就把最近学习的python内容给大家分享一下...#''' 在python中,CSV(Comma Separated Values),从字面上面 ...

  5. python开发_gzip_压缩|解压缩gz文件_完整版_博主推荐

    ''' gzip -- 支持gzip文件 源文件:Lib/gzip.py 这个模块提供了一些简单的接口来对文件进行压缩和解压缩,类似于GNU项目的gzip和gunzip. 数据的压缩源于zlib模块的 ...

  6. python开发_sqlite3_绝对完整_博主推荐

    '''SQLite数据库是一款非常小巧的嵌入式开源数据库软件,也就是说 没有独立的维护进程,所有的维护都来自于程序本身. 在python中,使用sqlite3创建数据库的连接,当我们指定的数据库文件不 ...

  7. python开发_copy(浅拷贝|深拷贝)_博主推荐

    在python中,有着深拷贝和浅拷贝,即copy模块 下面我们就来聊一下: 运行效果: ================================================== 代码部分: ...

  8. python开发_tkinter_菜单选项中英文切换_菜单选项不可用操作_博主推荐

    我使用的python版本为:3.3.2 如果你对python中tkinter模块的菜单操作不是很了解,你可以看看: python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推 ...

  9. python开发_dbm_键值对存储_完整_博主推荐

    ''' 在python的应用程序中,不需要关系型数据库时,如MySQL 可以使用python提供的持久字典dbm来存储名称和值(键值对) 这个类似于java的中的java.util.Map对象. 区别 ...

随机推荐

  1. linux下route命令--说的比较清楚!

    linux下route命令     route命令感觉很不容易.一般开机后在命令行中使用route命令,会得到下面的信息   Kernel IP routing table   Destination ...

  2. 监控MYSQL主从同步配置中监控从库运行状态的脚本

    代码如下: #!/bin/bash #Check MySQL Slave's Runnning Status #Crontab time 00:10 MYSQLPORT=`netstat -na|gr ...

  3. Activity工作流 -- java运用

    一. 什么是工作流 以请假为例,现在大多数公司的请假流程是这样的 员工打电话(或网聊)向上级提出请假申请——上级口头同意——上级将请假记录下来——月底将请假记录上交公司——公司将请假录入电脑 采用工作 ...

  4. 记一次测试环境下PXC集群问题《经验总结》

    1.问题描述                  当PXC集群节点全部宕机的,导致集群几点启动失败.报错导致无法启动   [ERROR] WSREP: It may not be safe to boo ...

  5. Educational Codeforces Round 25 D - Suitable Replacement(贪心)

    题目大意:给你字符串s,和t,字符串s中的'?'可以用字符串t中的字符代替,要求使得最后得到的字符串s(可以将s中的字符位置两两交换,任意位置任意次数)中含有的子串t最多. 解题思路: 因为知道s中的 ...

  6. 在eclipse中使用Maven3(笔记二)

    笔记本二   在Eclipse 中使用Maven 第一节:m2eclipse 插件安装 打开Eclipse,点击菜单Help - > Install New Software 点击Add 按钮N ...

  7. XSS与CSRF两种跨站攻击总结

    在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式.在这个年代, 参数化查询 [1] 已经成了普遍用法,我们已经离 SQL 注入很远了.但是 ...

  8. Linux 进程间通信(一)(经典IPC:管道、FIFO)

    管道 管道是Unix系统IPC的最古老方式,有两种局限性: (1)   历史上它们是半双工的(即数据只能在一个方向上流动),虽然现在某些系统提供了全双工管道,但是为了可移植性,不要抱有绝对的全双工假设 ...

  9. CNN基础

    CNN一般结构 卷积层作用: 1) 提取不同维度的特征,组合不同维度特征,其本质是卷积核,因此,学习一个有效的总卷积核是训练卷积层主要工作 2)寻找不同位置,不同大小的特征 3) 根据卷积核参数计算上 ...

  10. ASP.NET Zero--1.如何开始

    1.加群 群号:104390185,下载这个文件并解压 用VS2015打开aspnet-zero-1.9.0.1 2.修改配置文件 Web项目web.config连接字符串 <add name= ...