1. '''
  2. python中的zlib模块提供了压缩和解压缩的方法
  3.  
  4. 实现功能:
  5.  
  6. 读取一个文件的内容,然后把该文件的内容以字符串的形式返回
  7. 然后对返回回来的字符串进行压缩处理,然后写入到另一个文件中
  8. 同时,也提供一个方法进行对压缩内容进行解压缩
  9. '''

以下是我做的功能实现,代码中我写了详细的注释,详情如下:

SHOW_LOG = False

  1. Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] on win32
  2. Type "copyright", "credits" or "license()" for more information.
  3. >>> ================================ RESTART ================================
  4. >>>
  5. 压缩内容:[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*']
  6. 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'
  7. >>>

SHOW_LOG = True

  1. Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] on win32
  2. Type "copyright", "credits" or "license()" for more information.
  3. >>> ================================ RESTART ================================
  4. >>>
  5. 打开文件:[c:\test\test.txt]
  6. 读取内容:[#python zlib
  7. ]
  8. 读取内容:[
  9. ]
  10. 读取内容:[#Author : Hongten
  11. ]
  12. 读取内容:[#MailTo : hongtenzone@foxmail.com
  13. ]
  14. 读取内容:[#QQ : 648719819
  15. ]
  16. 读取内容:[#Blog : http://www.cnblogs.com/hongten
  17. ]
  18. 读取内容:[#Create : 2013-08-18
  19. ]
  20. 读取内容:[#Version: 1.0]
  21. 压缩内容:[#python zlib
  22.  
  23. #Author : Hongten
  24. #MailTo : hongtenzone@foxmail.com
  25. #QQ : 648719819
  26. #Blog : http://www.cnblogs.com/hongten
  27. #Create : 2013-08-18
  28. #Version: 1.0]
  29. 打开文件:[c:\test\com.txt]
  30. 写入内容:[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*']
  31. 打开文件:[c:\test\com.txt]
  32. 读取内容:[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*']
  33. 压缩内容:[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*']
  34. 解压缩内容:[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*']
  35. 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'
  36. >>>

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

代码部分:

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

  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. def main():
  80. init()
  81. #获取原信息
  82. data = get_content(ORI_PATH)
  83. #对内容进行压缩
  84. cdata = compress_test(data)
  85. #写入压缩文件内容
  86. write_file(COM_PATH, cdata)
  87. #获取压缩文件内容
  88. c_data = get_content(COM_PATH)
  89. print('压缩内容:[{}]'.format(c_data))
  90. #解压信息
  91. dedata = decompress_test(cdata)
  92. print(dedata)
  93.  
  94. if __name__ == '__main__':
  95. 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. php sprintf格式化注入

    URL:http://efa4e2c2b8df4ce69454639f4e3727071652c31167f341a4.game.ichunqiu.com/ 简单的说就是sprintf中%1$\'会将 ...

  2. STL hashtable阅读记录

    unordered_map,unordered_set等相关内容总结: unordered_map和unordered_set是在开发过程中常见的stl数据结构.其本质是hashtable.在SGI_ ...

  3. 147.Insertion Sort List---链表排序(直接插入)

    题目链接 题目大意:对链表进行插入排序. 解法:直接插入排序.代码如下(耗时40ms): public ListNode insertionSortList(ListNode head) { List ...

  4. u-boot启动第一阶段

    目标板:2440开发板 u-boot启动的第一阶段是在文件start.S中完成的,这个过程对不同硬件平台的设置是不同的.下面进入start.S _start: b reset //跳转到reset / ...

  5. str.format() 格式化字符串函数

    语法 它通过{}和:来代替%. “映射”示例 通过位置 In [1]: '{0},{1}'.format('kzc',18) Out[1]: 'kzc,18' In [2]: '{},{}'.form ...

  6. java并发容器

    同步容器将所有对容器状态的访问都串行化,以实现线程安全性.这种方式的缺点是严重降低并发性.Java 5.0提供了多种并发容器来改进同步容器的性能.如ConcurrentHashMap代替同步且基于散列 ...

  7. lumen 框架的特殊使用

    1. 配置代码格式管理工具: composer require squizlabs/php_codesniffer, 使用 php artisan cs 检查代码格式: 2.单元测试用例编写 1./d ...

  8. (四)Spring 对DAO 的支持

    第一节:Spring 对JDBC 的支持 1,配置数据源dbcp: 2,使用JdbcTemplate: 3,JdbcDaoSupport 的使用: 4,NamedParameterJdbcTempla ...

  9. Remove Duplicates from Sorted List II——简单的指针问题

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...

  10. Good Bye 2014 F - New Year Shopping

    F - New Year Shopping 对于一种特殊的不可逆的dp的拆分方法.. 也可以用分治写哒. #include<bits/stdc++.h> #define LL long l ...