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 正则式使用心得
May 07 Python
Python字符串逐字符或逐词反转方法
May 21 Python
Python实现简单的四则运算计算器
Nov 02 Python
Python中取整的几种方法小结
Jan 06 Python
python 获取图片分辨率的方法
Jan 08 Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
Aug 09 Python
python中对_init_的理解及实例解析
Oct 11 Python
Django 返回json数据的实现示例
Mar 05 Python
PyCharm 无法 import pandas 程序卡住的解决方式
Mar 09 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
Mar 30 Python
详解Python中import机制
Sep 11 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
PHP版 汉字转码的实现详解
2013/06/09 PHP
PHP中字符与字节的区别及字符串与字节转换示例
2016/10/15 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
javascript 尚未实现错误解决办法
2008/11/27 Javascript
javascript 拖放效果实现代码
2010/01/22 Javascript
最短的IE判断代码
2011/03/13 Javascript
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
当jQuery1.7遇上focus方法的问题
2014/01/26 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
2014/06/12 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
JavaScript 对象详细整理总结
2016/09/29 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
如何提高数据访问速度
2016/12/26 Javascript
Vue组件开发初探
2017/02/14 Javascript
对angularJs中$sce服务安全显示html文本的实例
2018/09/30 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
[03:48]大碗DOTA
2019/07/25 DOTA
Python2/3中urllib库的一些常见用法
2017/12/19 Python
Python使用googletrans报错的解决方法
2018/09/25 Python
PyCharm代码回滚,恢复历史版本的解决方法
2018/10/22 Python
Python多图片合并PDF的方法
2019/01/03 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
使用Puppeteer爬取微信文章的实现
2020/02/11 Python
python实现提取COCO,VOC数据集中特定的类
2020/03/10 Python
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
英国护肤品购物网站:Beauty Expert
2016/08/19 全球购物
C#的几个面试问题
2016/05/22 面试题
投标担保书范文
2014/04/02 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android