运维的我要学开发--Python(5)
2014-05-06 20:30
351 查看
本文均来自Python Cookbook,本博文励志将Cookbook中的string部位,文件,面向对象编程部分完成,本系列博文陆续还会介绍flask框架,每篇博文都以一个个小例子展示。
#-*- coding: utf-8 -*- ''' 从zip文件中读取数据 ''' import zipfile z = zipfile.ZipFile("flask-master.zip",'r') for filename in z.namelist(): print 'File:',filename, bytess = z.read(filename) print 'has',len(bytess),'bytes' ''' 临时文件的产生 ''' import tempfile,os handle,filename = tempfile.mkstemp('.txt') os.close(handle) print filename os.unlink(filename) #结果 c:\users\admini~1\appdata\local\temp\tmpapuidb.txt # ''' 多文件归档到一个压缩的tar文件 ''' import tarfile,os def make_tar(backup,dest,compression='bz2'): #指定文件后缀名称 if compression: dest_ext = '.'+compression else: dest_ext = '' #获取打包目录的基目录 arcname = os.path.basename(backup) #拼接打包文件的文件名称 dest_name = '%s.tar%s' % (arcname,dest_ext) #拼接打包文件的存放路径 dest_path = os.path.join(dest,dest_name) if compression: dest_cmp = ":" + compression else: dest_cmp = '' out = tarfile.TarFile.open(dest_path,'w'+dest_cmp) out.add(backup,arcname) out.close() return dest_path make_tar(".","F:\\") ''' yield的用法 迭代器是一个对象,它实现了迭代器协议 一般需要实现如下两个方法: 1.next方法 2.__iter__方法 对于一个列表使用for循环来遍历的时候起本质 是在运行列表中的__iter__()函数然后返回其本身以后每次迭代都调用next()函数, 迭代器: 每次迭代使用的时候所使用的参数都是第一次所保留下的, 在整个所有函数调用的参数都是第一次所调用时保留的,而不是新创建的 ''' #一个迭代器的示列 class Fib: '''''一个可以生成Fibonacci 数列的迭代器''' def __init__(self, max): self.max = max def __iter__(self): self.a = 0 self.b = 1 return self def next(self): fib = self.a if fib > self.max: raise StopIteration self.a, self.b = self.b, self.a + self.b return fib test = Fib(100) for i in test: print i #使用yield实现上述代码 def fib(max): a, b = 0, 1 while a < max: yield a a, b = b,a + b for j in fib(100): print j #上述运行过程解释: ''' fib(100)的实现过程如下: a,b = 0,1 while a <max: yield a 运行到这就停止了 此时a = 0 所以第一次迭代的结果是0 然后当第二次迭代的时候会继续从yield a开始运行 此时a=b 为 1,然后继续while再次达到 yield a 此时第二次迭代的结果是a=1,依次类推直到while 循环条件不满足的时候引发StopIteration 异常 '''
相关文章推荐
- CrazyWing:Python自动化运维开发实战 十八、Python面向对象
- Python3 2017大型自动化运维开发CTO高级培训班(18G)(视频+课件+源码)
- 用python+django+twistd 开发一个属于自己的运维系统
- 运维的我要学开发--Python(4)
- python全栈开发devops运维自动化方向初到高级在线课程分享
- python ATM取款机----运维开发初学(下篇)
- 面试宝典_Python.运维开发.0004.用Python实现tail实时输出新增日志?
- CrazyWing:Python自动化运维开发实战 十九、html基础入门
- Python运维自动化开发之Paramiko模块
- python运维开发实践--Day2
- 基础入门_Python-模块和包.运维开发中inspect自省模块的最佳实践?
- python ATM取款机----运维开发初学(上篇)
- Python运维自动化开发之Fabric模块
- Python-模块和包.运维开发中chartdet编码检测的最佳实践
- Python运维自动化开发之Fabric模块
- 面试宝典_Python.运维开发.0004.用Python实现grep-A/-B前后匹配?
- python购物车----运维开发初学
- CrazyWing:Python自动化运维开发实战 十二、Python数据类型之集合
- CrazyWing:Python自动化运维开发实战 六、流程控制
- python+django开发的运维工具——游戏内测服更新系统