功能:备份文件夹、能将文件的不同版本备份下来,并且每个有不同的名字

#! python3
# backupToZip.py - 备份文件的不同版本到压缩文件中import zipfile,os#folder-指定需要备份的文件夹
def backupToZip(folder):#获得绝对路径,以后就使用这样的方式来进行使用地址,不去上来就让path=‘绝对地址’了folder=os.path.abspath(folder)#figure out the filename this code should based on what files already existnumber=1while True:zipFilename=os.path.basename(folder)+'_'+str(number)+'.zip'if not os.path.exists(zipFilename): #判断文件名是否存在breaknumber+=1#create the ZIP file.print('Create %s...' %(zipFilename))backupZip=zipfile.ZipFile(zipFilename,'w')#遍历目录树并添加到ZIP文件for foldername,subfolders,filenames in os.walk(folder):print('Adding files in %s...' %(foldername))#添加当前文件夹到ZIP文件backupZip.write(foldername)#添加所有文件到ZIP文件中for filename in filenames:newBase=os.path.basename(folder)+'_'#不备份zip文件if filename.startswith(newBase) and filename.endswith('.zip'):continuebackupZip.write(os.path.join(foldername,filename))backupZip.close()print('Done')
path=r'.\forTest\adb_backup'
path=os.path.join(path)
backupToZip(path)

  

step1:弄清楚ZIP文件的文件名

  会按照文件的不同版本来创建名为backupFilename1、backupFilename2...这样的规律递增下去,怎么确定应该创建的zip文件的名字呢?通过检查某个文件名是否存在,如果存在,就按命名规律的下一个文件再检查。。。

#检查文件名是否存在number=1while True:zipFilename=os.path.basename(folder)+'_'+str(number)+'.zip'if not os.path.exists(zipFilename): #判断文件名是否存在breaknumber+=1

step2:创建压缩文件

print('Create %s...' %(zipFilename))
backupZIp=zipfile.ZipFile(zipFilename,'w')

step3:遍历目录树并添加到ZIP文件 

 #遍历目录树并添加到ZIP文件for foldername,subfolders,filenames in os.walk(folder):print('Adding files in %s...' %(foldername))#添加当前文件夹到ZIP文件backupZip.write(foldername)#添加所有文件到ZIP文件中for filename in filenames:newBase=os.path.basename(folder)+'_'#不备份zip文件if filename.startswith(newBase) and filename.endswith('.zip'):continuebackupZip.write(os.path.join(foldername,filename))

发现的问题:

  1)

backupZip.write(path)  #假如path是一个文件夹,那么在压缩文件中,只会出现这个文件夹,而里面的内容,并不会被压缩进去

  

  2)压缩文件中包含很多层文件夹,会把要压缩的文件夹的路径又创建一次(未解决)

    我以为是 foldrname 的原因,因为 foldername 是 os.walk() 返回的当前文件夹的字符串,然后就随便把 foldername 改了一下,运行提示

FileNotFoundError: [WinError 3] 系统找不到指定的路径

  

  3)这个传入的路径到快把我搞晕了,我为了谨慎起见,一直都是用的绝对路径,每次搞很长一个字符串,虽然没有出现过问题,但分析程序运行结果的时候很是影响,我也不知道相路径用上会不会出错的,要赶紧试一下

  4) walk() 太强大了,他能全部遍历,我中间竟然还担心这个程序有不能压缩下面的二级文件夹的缺陷

转载于:https://www.cnblogs.com/Gaoqiking/p/10464741.html

Python组织文件 实践:将文件的不同版本备份为ZIP文件相关推荐

  1. 【Python脚本进阶】1.3、第二个脚本:Zip文件口令破解机

    目录 一.简介 概述: 二.示例 示例: 优化 提高性能 任意性 注: 测试方法: 一.简介 概述: 编写Zip文件口令破解机要学习zipfile 库的使用方法 打开Python解释器, 我们用hel ...

  2. linux中zip文件编码错误,如何避免在 Linux 下解压 zip 文件时可能出现的乱码情况...

    zip 格式的压缩包应该是我们最常见的一种压缩格式了,不过这种格式虽然常见,但却有一点很不好,就是它并不会保存里面文件的编码格式,而这也会导致在解压压缩包时出现一种很常见的问题,就是乱码. 当前 Li ...

  3. java压缩文件太慢_java 解压6万个ZIP文件,如何提升速度?

    目前我使用的是org.apache.tools.zipjar包解压5015个zip文件,解压后14344个文件,耗时:669493毫秒代码:****************************** ...

  4. 计算机压缩文件上传无法打开,电脑打不开zip文件怎么解决并打开

    有时候我们查找资料的时候,下载了一下zip格式的文件,但是用鼠标怎么点击都是打不开,这是一个电脑压缩文件,是需要经过解压之后才可以打开的.下面是学习小编给大家整理的有关介绍,希望对大家有帮助! zip ...

  5. 用DriverBackUp备份了文件 装好系统后怎么把备份的驱动文件还原

    1.打开DriverBackUp 2.菜单栏选择Restore 3.选择open backup file 4.找到备份文件位置,并选择.bki后缀的文件 5.点击"打开" 6.勾选 ...

  6. zip压缩大于4g文件linux,unzip如何解压大于4GB的zip文件

    首先建议的是不要产生这么大的备份文件,而是产生MB大小的文件,而非GB级别的文件. 第二,此为系统设计使然,也可以算是系统的bug吧.详见下面的说明: Facts from the maintaine ...

  7. python批量解压文件,python批量解压zip文件的方法

    python怎样压缩和解压缩ZIP文件 说明 python使用zipfile模块来压缩和解压zip文件 才能最好于孤独中培养:品格最好在世界的汹涌波涛中形成. 代码 import os,os.path ...

  8. python读取zip包内文件_Python模块学习:zipfile zip文件操作

    最近在写一个网络客户端下载程序,用于下载服务器上的数据.有些数据(如文本,office文档)如果直接传输的话,将会增加通信的数据量,使下载时间变长.服务器在传输这些数据之前先对其进行压缩,客户端接收到 ...

  9. Python zipfile:高效处理 ZIP 文件(翻译)

    zipfile 可以很方便地读取.写入.提取zip文件.如果在日常工作中经常需要将某些文件打包到zip,不妨试试用它实现一定程度的自动化办公.另外 Python 的 Zip imports 也是一个有 ...

最新文章

  1. matlab编译错误怎么查找,matlab - Matlab mex文件编译错误-“未启用SSE2指令集” - 堆栈内存溢出...
  2. C#委托与事件学习笔记
  3. 42:换汽水瓶ExchangeBottle
  4. BUG系列:转让startActivityForResult()amp;onActivityResult()没有反应
  5. 关于WebRTC发展的担忧和思考
  6. oracle中pga指什么,oracle学习SGA跟PGA理解
  7. k8s源码Client-go中Reflector解析
  8. 如何使用以下命令 ls cat mv touch 以及如何使用 explainshell.com 这个网站
  9. CentOS安装l2tpd
  10. html js 处理元素的数据属性(data)
  11. 计算机科学与软件工程的关系
  12. Adobe photoshop 用户名、组织或序列号丢失或无效的解决方法
  13. “海潮效应”侵袭厨电市场,品牌突围时不我待
  14. 打开html按钮没文字,为什么我打开网页有些字没显示但能点击
  15. 城镇水务系统碳减排路径|给水与再生水系统
  16. C++中struct的用法
  17. 计算机数学与数学文化-定义
  18. 华为手机怎么录屏?十分简单,轻松学会
  19. 调制与解调(1)——初认识
  20. matlab norm函数使用_MATLAB 中NORM运用

热门文章

  1. 高铁订票系统css,高铁订票系统-数据库系统设计.pptx
  2. #中的引用型是什么意识_excel的vlookup函数经常引用错误,让我告诉你原因,迅速脱离误区...
  3. 学习java时的一些笔记(4)
  4. Magic Leap 2实测出炉:视场角增大20度,重量减轻20%,透光率低至0.3%让AR特效更逼真...
  5. 2021年度中国计算机大会的技术论坛,值得一谈
  6. iPhone因安全漏洞上热搜,苹果:暂时无法修复,法国总统也中招
  7. 使用NeMo快速完成NLP中的信息抽取任务 | 英伟达NLP公开课
  8. 网易北航搞了个奇怪研究:多数人类看不懂的立体图,AI现在看懂了
  9. 限量报名 | 计算机视觉、AI语音专场,腾讯教你做AI商业化实践
  10. 拿到腾讯字节快手offer后,他的LeetCode刷题经验在GitHub上收获1.3k星