python 简单备份文件脚本v1.0的实例


Posted in Python onNovember 06, 2017

整体思路

将要备份的目录列为一个列表,通过执行系统命令,进行压缩、备份。

这样关键在于构造命令并使用 os.system( )来执行,一开始使用zip 命令始终没有成功,后来发现Windows下并没有这个命令,还要安装GnuWin32项目,后来安装了7z,实现了使用系统命令进行压缩。

压缩命令

通过下载7z压缩,将7z.exe 7z,dll 加入系统环境变量目录,通过以下命令进行压缩、解压7z a test.zip a.txt b.txt # 指定若干文件

7z a test.zip f:/test/** # 压缩文件夹7z x test.zip -of:\test # -o表示输出目录,注意其与目录路径之间没有空格
7z x test.zip -o"f:\test abc" # 假如输出文件夹有空格,用引号包裹

测试一下:

C:\Users\hm\Desktop\Web>7z a tes.7z python362.chm

7-Zip 17.01 beta (x64) : Copyright (c) 1999-2017 Igor Pavlov : 2017-08-28

Scanning the drive:
file, 8010498 bytes (7823 KiB)

Creating archive: tes.7z

Add new data to archive: 1 file, 8010498 bytes (7823 KiB)


Files read from disk: 1
Archive size: 7982833 bytes (7796 KiB)
Everything is Ok

编写Python备份代码

7z命令压缩完成后,开始编写Python备份代码:

#Filename:backup.py
import os,time

#要备份的文件的列表
source = ['C:\\Users\\hm\\Desktop\\Web\\CH2','C:\\Users\\hm\\Desktop\\Web\\CH3']
#构造好备份目标文件
target_dir = 'D:\\backup'
target = target_dir + os.sep + time.strftime('%Y%m%d%H%M%S')+'.7z'
#strftime规划了时间的格式,在下面深入了解下这个函数

#构造系统命令行
command = "7z a {0} {1}".format(target,' '.join(source))
#字符串出现空格要用双引号吗?
#print(command)


#使用系统执行命令,执行成功将返回0
if os.system(command) == 0:
 print('备份成功至',target)
else:
 print('备份失败')

一开始遇到了这个错误,因为路径使用了‘C:\user'这种表示方法

SyntaxError
---------------------------
(unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

该错误的原因是:代码中的“\””在Python中表示转义.

1、在字符串前加上r或R,即:

source = [r'C:\Users\hm\Desktop\Web\CH2',r'C:\Users\hm\Desktop\Web\CH3']

其中r或R在python中表示一个不转义的字符串。

2、在“\”前加上"\"实现转义。

3、将“\”换为“/”,

改正错误后备份成功

备份成功至 D:\backup\20171105151908.7z

关于strftimr函数

查阅该函数资料如下:

语法

strftime()方法语法:

time.strftime(format[, t])参数
•format -- 格式字符串。
•t -- 可选的参数t是一个struct_time对象。
python中时间日期格式化符号:
•%y 两位数的年份表示(00-99)
•%Y 四位数的年份表示(000-9999)
•%m 月份(01-12)
•%d 月内中的一天(0-31)
•%H 24小时制小时数(0-23)
•%I 12小时制小时数(01-12)
•%M 分钟数(00=59)
•%S 秒(00-59)
•%a 本地简化星期名称
•%A 本地完整星期名称
•%b 本地简化的月份名称
•%B 本地完整的月份名称
•%c 本地相应的日期表示和时间表示
•%j 年内的一天(001-366)
•%p 本地A.M.或P.M.的等价符
•%U 一年中的星期数(00-53)星期天为星期的开始
•%w 星期(0-6),星期天为星期的开始
•%W 一年中的星期数(00-53)星期一为星期的开始
•%x 本地相应的日期表示
•%X 本地相应的时间表示
•%Z 当前时区的名称
•%% %号本身

在Python中尝试一下:

>>> import time
>>> print(time.strftime('%b%a'))
NovSun
>>> print(time.strftime('%b %a'))
Nov Sun
>>> print(time.strftime('%b %a %Z'))
Nov Sun 中国标准时间
>>> print(time.strftime('%b %a %p'))
Nov Sun PM

以上这篇python 简单备份文件脚本v1.0的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 面向对象 成员的访问约束
Dec 23 Python
python根据开头和结尾字符串获取中间字符串的方法
Mar 26 Python
Python smallseg分词用法实例分析
May 28 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
Aug 31 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
Nov 29 Python
python 切换root 执行命令的方法
Jan 19 Python
python3正则提取字符串里的中文实例
Jan 31 Python
django ListView的使用 ListView中获取url中的参数值方式
Mar 27 Python
python利用蒙版抠图(使用PIL.Image和cv2)输出透明背景图
Aug 04 Python
python中os.remove()用法及注意事项
Jan 31 Python
Python爬虫入门案例之爬取二手房源数据
Oct 16 Python
Python如何实现MySQL实例初始化详解
Nov 06 #Python
django rest framework之请求与响应(详解)
Nov 06 #Python
基于python中的TCP及UDP(详解)
Nov 06 #Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
Nov 06 #Python
利用Tkinter和matplotlib两种方式画饼状图的实例
Nov 06 #Python
django实现登录时候输入密码错误5次锁定用户十分钟
Nov 05 #Python
用Python登录好友QQ空间点赞的示例代码
Nov 04 #Python
You might like
留言板翻页的实现详解
2006/10/09 PHP
剖析 PHP 中的输出缓冲
2006/12/21 PHP
实用函数7
2007/11/08 PHP
php getsiteurl()函数
2009/09/05 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
php的laravel框架快速集成微信登录的方法
2016/12/12 PHP
thinkPHP中U方法加密传递参数功能示例
2018/05/29 PHP
js网页中的(运行代码)功能实现思路
2013/02/04 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
详解JS: reduce方法实现 webpack多文件入口
2017/02/14 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
2017/12/04 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
vue-cli中的babel配置文件.babelrc实例详解
2018/02/22 Javascript
详解npm 配置项registry修改为淘宝镜像
2018/09/07 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
layui前端时间戳转化实例
2019/11/15 Javascript
uni-app如何实现增量更新功能
2020/01/03 Javascript
解决js中的setInterval清空定时器不管用问题
2020/11/17 Javascript
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
python网络爬虫采集联想词示例
2014/02/11 Python
python 显示数组全部元素的方法
2018/04/19 Python
详解用python写网络爬虫-爬取新浪微博评论
2019/05/10 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
2019/11/08 Python
python3 sorted 如何实现自定义排序标准
2020/03/12 Python
利用python清除移动硬盘中的临时文件
2020/10/28 Python
美国高街时尚品牌:OASAP
2016/07/24 全球购物
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
高校自主招生自荐信
2013/12/09 职场文书
中英文自我评价语句
2013/12/20 职场文书
保护环境建议书
2014/03/12 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript
mysq启动失败问题及场景分析
2021/07/15 MySQL
python解析照片拍摄时间进行图片整理
2022/07/23 Python