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 相关文章推荐
在类Unix系统上开始Python3编程入门
Aug 20 Python
python学习必备知识汇总
Sep 08 Python
Django如何实现内容缓存示例详解
Sep 24 Python
django实现用户登陆功能详解
Dec 11 Python
浅谈用VSCode写python的正确姿势
Dec 16 Python
利用Hyperic调用Python实现进程守护
Jan 02 Python
Python 通过调用接口获取公交信息的实例
Dec 17 Python
python 模拟创建seafile 目录操作示例
Sep 26 Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 Python
Python实现手势识别
Oct 21 Python
python实现在列表中查找某个元素的下标示例
Nov 16 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
Jan 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/03/05 PHP
php 目录遍历、删除 函数的使用介绍
2013/04/28 PHP
php去掉文件前几行的方法
2015/07/29 PHP
php中session_id()函数详细介绍,会话id生成过程及session id长度
2015/09/23 PHP
PHP获取页面执行时间的方法(推荐)
2016/12/10 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
基于JQuery的日期联动实现代码
2011/02/24 Javascript
JS数组的赋值介绍
2014/03/10 Javascript
javascript操作excel生成报表示例
2014/05/08 Javascript
SyntaxHighlighter 3.0.83使用笔记
2015/01/26 Javascript
jQuery实用技巧必备(上)
2015/11/02 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
微信小程序 教程之事件
2016/10/18 Javascript
讲解vue-router之什么是嵌套路由
2018/05/28 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
vue props对象validator自定义函数实例
2019/11/13 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
2020/12/04 Vue.js
Python中的迭代器漫谈
2015/02/03 Python
python对数组进行反转的方法
2015/05/20 Python
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
Python打印输出数组中全部元素
2018/03/13 Python
使用Django和Python创建Json response的方法
2018/03/26 Python
详解django三种文件下载方式
2018/04/06 Python
Python3.7安装keras和TensorFlow的教程图解
2020/06/18 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
2020/02/05 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
公司离职证明范本
2014/01/13 职场文书
开服装店计划书
2014/08/15 职场文书
2014年扶贫帮困工作总结
2014/12/09 职场文书
将MySQL的表数据全量导入clichhouse库中
2022/03/21 MySQL
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
2022/06/01 Java/Android