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

python实践项目十:zipfile模块-将一个文件夹备份到一个 ZIP 文件的更多相关文章
- Python实践练习:将一个文件夹备份到一个 ZIP 文件
题目 项目要求:假定你正在做一个项目,它的文件保存在 C:\AlsPythonBook 文件夹中.你担心工作会丢失, 所以希望为整个文件夹创建一个 ZIP 文件, 作为"快照" . ...
- 批量定时任务将rtf文件转为docx,入参是rtf文件夹,生成一个docx文件夹
java,python等语言对于rft的处理很受限,rtf提供了很少的api供外部调用处理,但是对于docx我们却又很多api来处理,所以很多人会有需求将rtf批量转为docx的需求,接下来就来说说解 ...
- java 复制指定目录中的所有文件和文件夹到另一个指定文件夹中
package com.test; import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream ...
- 把当前文件夹的xlsx或xls文件合并到一个excel文件中的不同sheet中
把当前文件夹的xlsx或xls文件合并到一个excel文件中的不同sheet中步骤如下: 把需要合并的文件放到同一个文件夹 在该文件夹中新建一个excel文件 打开新建的excel问价,把鼠标放到sh ...
- python学习笔记之zipfile模块
为什么学习: 在做自动化测试平台的apk上传功能部分时候,涉及到apk上传后提取apk的icon图标,通过aapt解析apk,获取对应icon在apk中的地址,通过python的zipfile模块来解 ...
- Python基础(十)-模块
模块初识 一般把不同功能代码放到不同py文件,一个py文件就是一个模块 三种模块库: 1.Python标准库 2.第三方库 3.自定义库 导入模块:import 库名 (Python解释器只认识执行文 ...
- Python win32com模块 合并文件夹内多个docx文件为一个docx
Python win32com模块 合并文件夹内多个docx文件为一个docx #!/usr/bin/env python # -*- coding: utf-8 -*- from win32com. ...
- Python学习日记(十九) 模块导入
模块导入 当文件夹中有这样一个自定义的command模块 在它的内部写下下列代码: print('这个py文件被调用!') def fuc(): print('这个函数被调用!') 然后我们在comm ...
- android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件
简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...
随机推荐
- 上下左右居中 无固定高的div
<style type=“text/css”> #vc { display:table; background-color:#C2300B; width:500px; height:200 ...
- maven的目录
maven目录主要分为: src/main/java:项目主体源代码目录 src/main/resources:项目主体源代码所需资源目录 src/test/java:测试代码目录(测试代码不会被打包 ...
- 事件类型(onfocus和onblur)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 关于Windows系统里的事后调试
我一直在想,应用程序抛出未处理的异常和附加到进程的调试器之间会发生什么.显然这些信息就在我眼皮底下,但我是瞎子.Windows调试器关于事后调试的文档包含了您想要知道的所有详细信息. 最常见的应用程序 ...
- js constructor typeOf 区别
constructor 属性返回对创建此对象的数组函数的引用. 例如:const obj = {a: 1} console.log(obj.constructor) // funct ...
- mysql abs() 获取绝对值
mysql> -); +----------+ | abs(-) | +----------+ | | +----------+ row in set (0.00 sec)
- vim配置无插件
其实,vim插件会影响编辑器的启动速度,虽然有些插件影响不大,我依然觉得不够,其实通过简易的状态栏,可以显示必要的信息,能自定义颜色和背景甚至透明就足够了. 一.自定义状态栏其实以下内容可以写在一行上 ...
- arts lettcode 题目
编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow" ...
- Java_jdbc 基础笔记之六 数据库连接 (PreparedStatement)
reparedStatement 是 Statement 的子接口 * ①需要预编译 SQL 语句:PreparedStatement ps = conn.preparedStatement(sql) ...
- AOP的定义和原理
一.本课目标 理解Spring AOP的原理 掌握Spring AOP的七个术语 二.面向切面编程(AOP) AOP的思想是,不去动原来的代码,而是基于原来代码产生代理对象,通过代理的方法,去包装原 ...