• python实践项目十:zipfile模块-将一个文件夹备份到一个 ZIP 文件


    描述:将指定路径下的某文件夹备份到一个zip文件

    代码

     1 #!/usr/bin/python
     2 # -*- coding: UTF-8 -*-
     3 # backupToZip - Copies an entire folder and its contents into a ZIP file whose filename increments
     4 import zipfile,os
     5 
     6 def backupToZip(folder):  #folder参数为需要备份的文件夹的路径
     7     folder=os.path.abspath(folder)  #返回一个绝对路径
     8     number=1
     9     while 1:
    10         #os.path.basename():返回path最后的文件名
    11         #创建一个zip文件名
    12         zipPath='F:\'  #定义zip文件存储路径
    13         zipFileName=zipPath+os.path.basename(folder)+'_'+str(number)+'.zip'
    14         #用于寻找一个还没使用过的zip文件名,如果存在则继续寻找,如果不存在则停止寻找,并得到一个之前不存在的zip文件名
    15         #os.path.exists():判断括号里的文件/文件路径是否存在
    16         if not os.path.exists(zipFileName):
    17             break
    18         number+=1
    19     #创建zip文件
    20     print 'Creating %s...' %(zipFileName)
    21     #创建一个zip文件,文件名为zipFileName,’w'表示压缩
    22     backupZip=zipfile.ZipFile(zipFileName,'w')
    23     #os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下,
    24     #每次迭代中,它将返回这次迭代当前的文件夹名称、 这个文件夹中的子文件夹,
    25     # 以及这个文件夹中的文件名
    26     #参考链接:https://www.runoob.com/python/os-walk.html
    27     for foldername,subfolders,filenames in os.walk(folder):
    28         print 'Adding files in %s...' %(foldername)
    29         #将文件夹名写入zip
    30         #如果向 ZipFile 对象的 write()方法传入一个路径,Python 就会压缩该路径所指的文件,将它加到 ZIP 文件中。write()方法的第一个参数是一个字符串,代表要添加的文件名
    31         backupZip.write(foldername) #将需备份的文件夹的各层文件夹(从最外层到最内层)放入zip
    32         #循环遍历,将每一个文件写入zip
    33         for filename in filenames:
    34             # 保证之前生成的zip文件不会被添加到新的zip文件中
    35             newBase=os.path.basename(folder)+'_' #获取需备份的文件夹的文件名
    36             if filename.startswith(newBase) and filename.endswith('.zip'):
    37                 continue
    38             #将各层文件夹内的文件按照路径映射关系写入zip
    39             backupZip.write(os.path.join(foldername,filename))
    40     backupZip.close()
    41     print 'Done!'
    42 
    43 backupToZip('F:\file')  #调用函数,参数为文件夹路径字符串,此路径及文件夹需真实存在,否则会返回一个空的zip文件

    运行结果

  • 相关阅读:
    MongoDB慢查询性能分析
    redis的LRU算法(二)
    Skynet服务热点火焰图分析
    内存爆灯
    时区问题
    与机器共生
    bug狩猎
    Lesson Learned
    下划线引起的血案
    Intel的CPU漏洞:Spectre
  • 原文地址:https://www.cnblogs.com/heyangblog/p/11160041.html
Copyright © 2020-2023  润新知