python实现在pickling的时候压缩的方法,pythonpickling
python实现在pickling的时候压缩的方法,pythonpickling
本文实例讲述了python实现在pickling的时候压缩的方法。分享给大家供大家参考。
具体方法如下:
import cPickle,gzip def save(filename,*objects): fil1 = gzip.open(filename,'wb') for obj in objects: cPickle.dump(obj,fil1,protocol = 2) fil1.close() def load(filename): fil1 = gzip.open(filename,'rb') while True: try: yield cPickle.load(fil1) except EOFError: break fil1.close() data1 = ['abc',12,23] #几个测试数据 data2 = {1:'aaa',"b":'dad'} data3 = (1,2,4) data = list([data1,data2,data3]) save('data.zip',data) iter = load('data.zip') for item in iter: for data in item: print data
本文实例测试环境为Python2.7.6
程序运行结果如下:
['abc', 12, 23] {1: 'aaa', 'b': 'dad'} (1, 2, 4)
在程序运行的同时会在同级目录下生成data.zip文件。
希望本文所述对大家Python程序设计的学习有所帮助。
用py内置的zip/inflate/deflate就很好
问题:我没有在Python2.7下测试你的代码,只是在Python3.2下测试的,因为我没装2.7版本的。不过,没关系,其字符串用法及其意义是一样的。我测试了一下,应该是其中的一句出错了:target_dir=r'D:\bak\\' 。这句话在语法上没有问题,也是要这么写,但是target_dir的值就有可能不是我们所想的了,你可以使用print输出一下target_dir的值,我在3.2下输入的结果是:D:\bak\\。这一看就不对,多了一个反斜杠(\),导致在Windows下路径出错。
解决:把target_dir=r'D:\bak\\'后面再加上一句:target_dir=target_dir[0:-1]。这样一来,就把最后的反斜杠给清除了,路径就对了!应该没问题了,我直接看的代码,发现这句有问题,就对这句单独测试的,其它的代码没有测试,不过,看语法应该没问题了!
另外:你使用的后缀名是.rar,压缩命令是rar程序,所以备份的文件名应该是rar文件;在Windows下,我没用过rar命令行压缩命令,也不太清楚,推测应该是rar文件。至于你问的文件夹可以不可以备份和文件夹下的目录可以不可以备份,这不是 Python所管的事(至少在你这段代码中),至于能不能,要看你这个Windows下的rar程序支持不支持了;如果支持,就可以,如果不支持,就不可以。原因:os.system()函数类似于C/C++中的system(),它会把传递给它的参数交给系统环境(也就是运行Python程序操作系统)来执行,这和我们在相应的系统环境中的命令行下直接命令是一样的,区别就是我们这个使用的是脚本,可以保存代码以自动(例行性服务)或手动地、定期地备份!
相关内容
- 跟老齐学Python之dict()的操作方法,齐学python
- 跟老齐学Python之有点简约的元组,齐学python
- 跟老齐学Python之数据类型总结,齐学python数据类型
- Python greenlet实现原理和使用示例,pythongreenlet
- 跟老齐学Python之深入变量和引用对象,齐学python
- 跟老齐学Python之赋值,简单也不简单,齐学python赋值
- Python的高级Git库 Gittle,pythongitgittle
- Python中的exec、eval使用实例,pythoneval
- Python中的自定义函数学习笔记,python学习笔记
- Python函数嵌套实例,python函数嵌套
评论关闭