编写一个Python脚本——Windows下Python压缩文件

来源:互联网 发布:澳门网络博客有限公司 编辑:程序博客网 时间:2024/06/05 13:33

背景:最近学习Python,看到《简明Python教程》,第10章编写一个Python脚本

问题:为所有重要文件备份。

分析:1需要备份的文件和目录由一个列表指定;2、备份应该保存在主备份目录中;3、文件备份成一个zip文件;4、zip存档的名称为当前的日期和时间;5、使用标准的zip命令

代码:

# Filename: backup_ver1.pyimport osimport zipfileimport timesource = (r'F:\pythonCode\lesson2')target_path = 'F:\\pythonCode\\lesson\\'today  = target_path + time.strftime('%Y%m%d')now = time.strftime('%H%M%S')# print nowif not os.path.exists(today):    os.mkdir(today)    print 'Sucessfully created directory',today    zipName = today + os.sep + now + '.zip'# print zipNamef = zipfile.ZipFile( zipName, 'w', zipfile.ZIP_DEFLATED )for dirpath, dirnames, filenames in os.walk(source):    for filename in filenames:        print filename        f.write(os.path.join( source, filename))        # print 1f.close
代码分析:

本程序中需要引用os、zipfile、time模块,其中zipfile用来创建和读取zip文件,time用来获取当前的时间。

1、zipfile使用用例

z = zipfile.ZipFile(filename, 'r',ZIP_DEFLATED)#这里第二个参数用r表示读取zip文件,w表示创建一个zip文件for f in z.namelist():    print f
解:此代码用于读取一个zip压缩包里所有文件的名字,filename为文件路径

2、os.walk解读

os.walk(top, topdown = True, onerror = None, followlinks = False)
其中

top:所要遍历的目录地址;

topdown:为真,优先遍历top目录;为假,优先遍历子目录;

os.walk()返回值是一个生成器(generator),返回一个三元组(root,dirs,files),每次循环都更新;
其中

root:指当前遍历的这个文件夹的本身地址;

dirs:是一个list,内容为该文件夹下的所有目录(子目录),也是文件夹;

files:一个list,内容是该文件夹下的所有文件。

下面借用一个例子说明,转自http://www.jianshu.com/p/bbad16822eab

文件结构如下:

a ->   b   ->   1.txt,  2.txt             c   ->   3.txt             d   ->              4.txt           5.txt
for (root, dirs, files) in os.walk('a'):    #第一次运行时,当前遍历目录为 a    所以 root == 'a'         dirs == [ 'b', 'c', 'd']         files == [ '4.txt', '5.txt']    。。。    # 接着遍历 dirs 中的每一个目录    b:  root  = 'a\\b'        dirs  = []        files = [ '1.txt', '2.txt']    # dirs为空,返回    # 遍历c    c:  root  = 'a\\c'        dirs  = []        files = [ '3.txt' ]    PS : 如果想获取文件的全路径,只需要     for f in files:        path = os.path.join(root,f)    # 遍历d    d:  root  = 'a\\b'        dirs  = []        files = []    遍历完毕,退出循环
至此可以解读上面Python程序




原创粉丝点击