Python实例学习-文件备份

1. 介绍


通过实例学习Python的使用,该实例来自文献[1]中的第11章解决问题。

由于没有搞清楚Win7下如何通过命令行调用zip命令,所以采用7z[2],采用7-zip命令行版本[3],版本号为7-zip
9.20,下载后需要配置环境变量,修改Path,使其包含7za.exe所在目录。

软硬件配置情况:

Win7旗舰版 SP1

Python 3.4

7-zip 9.20 命令行版本(需要配置环境变量Path)

2. 问题

写一个能给我所有重要文件建立备份的程序。

程序如何工作:

1.需要备份的文件和目录由一个列表指定。

2.备份应该保存在主备份目录中。

3.文件备份成一个zip文件。

4.zip存档的名称是当前的日期和时间。

5.使用标准的zip命令。它通常默认的随Linux/
Unix发行版提供。Windows用户可以从GnuWin32项目安装。注意你可以使用任何存档命令,只要它有命令行界面就可以了,那样的话我们可以从我们的脚本中传递参数给它。(本文使用了7-zip
9.20命令行版本)

解决方案来自参考文献[1]。

2.1 解决方案1

实现功能:

压缩文件备份到主目录下,文件名已目前的日期时间为名称。

代码如下所示:

 1 #! /usr/bin/python
2 # Filename: backup_ver1.py
3
4 import os
5 import time
6
7 # 1. The files and directories to be backed up are specified in a list
8 source = [‘"D:\\QT\\py 1"‘,‘D:\\QT\\py2‘]
9 # Notice we had to use double quotes inside the string for names with spaces in it
10
11 # 2. The backup must be stored in a main backup directory
12 target_dir = ‘D:\\PYBackup‘
13
14 # 3. The files are backed up into a zip file
15 # 4. The name of the zip archive is the current date and time
16 target = target_dir + os.sep + time.strftime(‘%Y%m%d%H%M%S‘) + ‘.zip‘
17
18 # 5. We use the 7za command to put the files in a zip archive
19 zip_command = ‘7za.exe a {0} {1}‘.format(target, ‘ ‘.join(source))
20
21 # Run the backup
22 if os.system(zip_command) == 0:
23 print (‘Successful backup to ‘, target)
24 else:
25 print (‘Backup Failed‘)

运行结果:

2.2 解决方案2

实现功能:

更好的文件名机制:使用时间作为文件名,而当前的日期作为目录名,存在在主备份目录中。这样做的优势:

(1)你的备份会以等级结构存储,因此它就更容易管理了。

(2)文件名的长度变短。

(3)采用各自独立的文件夹可以帮助你方便的检验你是否在每一天创建了备份。

代码如下所示:

 1 #! /usr/bin/python
2 # Filename: backup_ver2.py
3
4 import os
5 import time
6
7 # 1. The files and directories to be backed up are specified in a list
8 source = [‘"D:\\QT\\py 1"‘,‘D:\\QT\\py2‘]
9 # Notice we had to use double quotes inside the string for names with spaces in it
10
11 # 2. The backup must be stored in a main backup directory
12 target_dir = ‘D:\\PYBackup‘ # Remember to change this to what you will be using
13
14 # 3. The files are backed up into a zip file.
15 # 4. The current day is the name of the subdirectory in the main directory
16 today = target_dir + os.sep + time.strftime(‘%Y%m%d‘)
17 # The current time is the name of the zip archive
18 now = time.strftime(‘%H%M%S‘)
19
20 # Create the subdirectory if it isn‘t already there
21 if not os.path.exists(today):
22 os.mkdir(today) # make directory
23 print (‘Successfully created directory‘,today)
24
25 # The name of the zip file
26 target = today + os.sep + now + ‘.zip‘
27
28 # 5. We use the 7za command to put the files in a zip archive
29 zip_command = ‘7za.exe a {0} {1}‘.format(target, ‘ ‘.join(source))
30
31 # Run the backup
32 if os.system(zip_command) == 0:
33 print (‘Successful backup to ‘, target)
34 else:
35 print (‘Backup Failed‘)

运行结果:

2.3 解决方案3

实现功能:

通过在zip归档名上附带一个用户提供的注释来提高备份的可理解性。

代码如下所示:

 1 #! /usr/bin/python
2 # Filename: backup_ver3.py
3
4 import os
5 import time
6
7 # 1. The files and directories to be backed up are specified in a list
8 source = [‘"D:\\QT\\py 1"‘,‘D:\\QT\\py2‘]
9 # Notice we had to use double quotes inside the string for names with spaces in it
10
11 # 2. The backup must be stored in a main backup directory
12 target_dir = ‘D:\\PYBackup‘ # Remember to change this to what you will be using
13
14 # 3. The files are backed up into a zip file.
15 # 4. The current day is the name of the subdirectory in the main directory
16 today = target_dir + os.sep + time.strftime(‘%Y%m%d‘)
17 # The current time is the name of the zip archive
18 now = time.strftime(‘%H%M%S‘)
19
20 # Take a comment from the user to create the name of the zip file
21 comment = input (‘Enter a comment --> ‘)
22 if len(comment) == 0: # check if a comment was entered
23 target = today + os.sep + now + ‘.zip‘
24 else:
25 target = today + os.sep + now + ‘_‘ +26 comment.replace(‘ ‘, ‘_‘) + ‘.zip‘
27
28 # Create the subdirectory if it isn‘t already there
29 if not os.path.exists(today):
30 os.mkdir(today) # make directory
31 print (‘Successfully created directory‘,today)
32
33 # 5. We use the 7za command to put the files in a zip archive
34 zip_command = ‘7za.exe a {0} {1}‘.format(target, ‘ ‘.join(source))
35
36 # Run the backup
37 if os.system(zip_command) == 0:
38 print (‘Successful backup to ‘, target)
39 else:
40 print (‘Backup Failed‘)

运行结果:

输入Backup

没有输入任何值,直接按回车

3. 总结

看到自己编写的程序能够运行并完成预期的功能,感觉挺爽!

Python,还没入门,还有好多的路要走,加油!

参考文献


[1] Swaroop, C.H.(著), Let it be!(译)(e-mail: [email protected]), A Byte of
Python v1.92(for Python 3.0), 2011.7.9

[2] 7z, http://sparanoid.com/lab/7z/

[3] 7-zip 命令行版本(7-zip
9.20), http://downloads.sourceforge.net/sevenzip/7za920.zip

时间: 2024-12-07 12:36:18

Python实例学习-文件备份的相关文章

python学习过程中if的几种写法

python实例学习中遇到的小问题,我对题目改动一下需要显示每一档的结果,可以用列表和if语句来完成,文章最后是原题目和答案 一.if的方式 A.程序 # !/usr/bin/python# -*- coding: UTF-8 -*- i = int(input('净利润:'))arr = [1000000, 600000, 400000, 200000, 100000, 0]rat = [0.01, 0.015, 0.03, 0.05, 0.075, 0.1]r = 0for idx in r

python项目练习地址

作者:Wayne Shi链接:http://www.zhihu.com/question/29372574/answer/88744491来源:知乎著作权归作者所有,转载请联系作者获得授权. 目前是34个Python项目,会继续保持更新.Learn by doing才是正确的技术学习姿势.20160816更新:Python - 高德API+Python解决租房问题Python - 基于 Flask 及爬虫实现微信娱乐机器人Python - Python3 实现淘女郎照片爬虫Python - Py

Python代码样例列表

├─algorithm│       Python用户推荐系统曼哈顿算法实现.py│      NFA引擎,Python正则测试工具应用示例.py│      Python datetime计时程序的实现方法.py│      python du熊学斐波那契实现.py│      python lambda实现求素数的简短代码.py│      Python localtime()方法计算今天是一年中第几周.py│      Python math方法算24点代码详解.py│      Pyth

【转载】【python】python练手项目

入门篇 1.Python - Python 图片转字符画 50 行 Python 代码完成图片转字符画小工具. 2.Python - 200行Python代码实现2048 仅用200行的python代码完成2048小游戏的编写. 3.Python - pygame开发打飞机游戏 使用Python快速开发一款PC端玩耍的微信打飞机游戏,基于pygame实现. 4. Python 实现简单画板 要利用 Pygame 模块来自己实现一个功能更加简单的画板. 5.Python - 全面解析PythonC

简明python教程读书笔记(二)之为重要文件备份

一.可行性分析: 一般从经济.技术.社会.人四个方向分析. 二.需求分析: 需求分析就是需要实现哪些功能,这个很明了-文件备份 几个问题: 我们的备份位置? 什么时间备份? 备份哪些文件? 怎么样存储备份(文件类型)? 备份文件的名称?(需要通俗明了,一般是以当前时间命名) 三.实施过程: 方案一: #!/usr/lib/env python import osimport timebacklist=['/etc','/root']to='/mnt/' target=to+time.strfti

Python:简单的文件备份脚本

文件备份脚本,实现了按照日期归类,时间建备份文件的功能,还能加入用户的备注信息. #!/usr/bin/python #Filename:backup_ver3.py import os import time #1.source file which to be backed up. source = ['/home/shibo/Code'] #2.target path which are backed up to. target_dir = '/home/shibo/backup/' #3

python编写采集实例学习笔记

用python写了一个采集程序,因为之前写了大半年的php数据采集,所以转用python做的话,流程差不多,就是换成python的语法函数实现就行了,不过通过用python实现,可以学习下python的一些东西 #python和php的差异是什么,python相对于php有哪些优势 这几天学习的感受是,python的适用应用范围更广,更灵活,而PHP主攻web后端. 首先python和PHP差别还是蛮多的,比如注释中有中文都要声明一下 #decoding=utf-8 #引入 #urllib 后续

python文件备份与简单操作

#!/usr/bin/python # -*- coding: utf-8 -*- # data:2018/8/30 # user:fei import sys import random num = random.sample(range(5,10),1)[0] url1='server 10.10.4.yy' + '\n' url2='server 10.10.4.xx'+ '\n' # url = url1 + url2 souse1 = '1xx' souse2 = '1yy' oldf

python 练手程序 文件备份

#filename; backup_ver3.py import os import time source = ['/home/book/Desktop/happy','/home/book/Desktop/new'] target_dir = '/home/book/Desktop/backup' today = target_dir + time.strftime('%Y%m%d') now = time.strftime('%H%M%S') comment = raw_input('En