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 ...
随机推荐
- Django API view 登录认证
文件分类 url from django.contrib import admin from django.urls import path, re_path from django.urls imp ...
- 海康相机开发(1) SDK安装和开发
1.1 安装包获取 从官网下载最新版本的MVS安装包,支持Windows xp.Windows 7.Windows 8.Windows 10的32和64位系统.安装过程默认即可. 官网下载链接:htt ...
- MongoDB 红宝书-MongoDB官网使用指南
本文转载自Mongodb中文社区:http://www.mongoing.com/archives/27359 无论你是MongoDB的使用者.爱好者.初学者还是路人甲,有一个学习与进修的资源宝藏是千 ...
- 微信小程序底部导航栏部署
在微信小程序开发app.json(app.json它是定义全局页面) 只是用来部署微信底部的图标,最多不能大于五个 "tabBar":{ "selectedColor&q ...
- graphql-query-rewriter 无缝处理graphql 变更
graphql-query-rewriter 是一个graphql schema 变动重写的中间件,可以帮助我们解决在版本变动,查询实体变动 是的问题,从目前已知的技术中我们可选的方案有以下处理变动的 ...
- Cesium 加载天地图
网上有很多 就是没说 加载天地图需要开发者秘钥,这个需要去天地图官网申请一个就可以了,下面贴上源码 还有就是Cesium也是需要token的哈 <!DOCTYPE html> <ht ...
- 【loj2552】【CTSC2018】假面
题目 有\(n\)个敌方单位,初始生命值分别为\(m_1,\cdots,m_n\) : 假面可以释放\(Q\)个技能: $op = 0 , id , u , v $ 表示对\(id\)号敌人有\( ...
- kafka-python 1.4.6 版本触发的一个 rebalance 问题
在使用了最新版的 kafka-python 1.4.6 在 broker 对 topic 进行默认配置的情况下报出类似错误 CommitFailedError CommitFailedError: C ...
- lnmp环境脚本快速搭建
进入lnmp官网 https://lnmp.org/download.html 如图: 进入Linux服务器并执行wget命令下载 wget http://soft.vpser.net/lnmp/ln ...
- idea的maven工程中修改pom会改变项目jdk版本
解决办法 方案一 //pom中配置maven插件时候 <plugins> <!--jdk编译插件--> <plugin> <groupId>org.ap ...