永发信息网

如何使用windows系统在python编写备份文件

答案:1  悬赏:80  手机版
解决时间 2021-04-28 17:07

#!/usr/bin/python
# Filename: backup_ver1.py

import os
import time

# 1. The files and directories to be backed up are specified in a list.
source = ['/home/swaroop/byte', '/home/swaroop/bin']
# If you are using Windows, use source = [r'C:\Documents', r'D:\Work'] or something like that

# 2. The backup must be stored in a main backup directory
target_dir = '/mnt/e/backup/' # Remember to change this to what you will be using

# 3. The files are backed up into a zip file.
# 4. The name of the zip archive is the current date and time
target = target_dir + time.strftime('%Y%m%d%H%M%S') + '.zip'

# 5. We use the zip command (in Unix/Linux) to put the files in a zip archive
zip_command = "zip -qr '%s' %s" % (target, ' '.join(source))

# Run the backup
if os.system(zip_command) == 0:
print 'Successful backup to', target
else:
print 'Backup FAILED'

(源文件:code/backup_ver1.py)

输出

$ python backup_ver1.py
Successful backup to /mnt/e/backup/20041208073244.zip

现在,我们已经处于测试环节了,在这个环节,我们测试我们的程序是否正确工作。如果它与我们所期望的不一样,我们就得调试我们的程序,即消除程序中的 瑕疵 (错误)。

它如何工作

接下来你将看到我们如何把 设计 一步一步地转换为 代码 。

我们使用了os和time模块,所以我们输入它们。然后,我们在source列表中指定需要备份的文件和目录。目标目录是我们想要存储备份文件的地方,它由target_dir变量指定。zip归档的名称是目前的日期和时间,我们使用time.strftime()函数获得。它还包括.zip扩展名,将被保存在target_dir目录中。

time.strftime()函数需要我们在上面的程序中使用的那种定制。%Y会被无世纪的年份所替代。%m会被01到12之间的一个十进制月份数替代,其他依次类推。这些定制的详细情况可以在《Python参考手册》中获得。《Python参考手册》包含在你的Python发行版中。注意这些定制与用于print语句的定制(%后跟一个元组)类似(但不完全相同)

我们使用加法操作符来 级连 字符串,即把两个字符串连接在一起返回一个新的字符串。通过这种方式,我们创建了目标zip文件的名称。接着我们创建了zip_command字符串,它包含我们将要执行的命令。你可以在shell(Linux终端或者DOS提示符)中运行它,以检验它是否工作。

zip命令有一些选项和参数。-q选项用来表示zip命令安静地工作。-r选项表示zip命令对目录递归地工作,即它包括子目录以及子目录中的文件。两个选项可以组合成缩写形式-qr。选项后面跟着待创建的zip归档的名称,然后再是待备份的文件和目录列表。我们使用已经学习过的字符串join方法把source列表转换为字符串。

最后,我们使用os.system函数 运行 命令,利用这个函数就好像在 系统 中运行命令一样。即在shell中运行命令——如果命令成功运行,它返回0,否则它返回错误号。

根据命令的输出,我们打印对应的消息,显示备份是否创建成功。好了,就是这样我们已经创建了一个脚本来对我们的重要文件做备份!

给Windows用户的注释
你可以把source列表和target目录设置成任何文件和目录名,但是在Windows中你得小心一些。问题是Windows把反斜杠(\)作为目录分隔符,而Python用反斜杠表示转义符!
所以,你得使用转义符来表示反斜杠本身或者使用自然字符串。例如,使用'C:\\Documents'或r'C:\Documents'而不是'C:\Documents'——你在使用一个不知名的转义符\D!

现在我们已经有了一个可以工作的备份脚本,我们可以在任何我们想要建立文件备份的时候使用它。建议Linux/Unix用户使用前面介绍的可执行的方法,这样就可以在任何地方任何时候运行备份脚本了。这被称为软件的实施环节或开发环节。

上面的程序可以正确工作,但是(通常)第一个程序并不是与你所期望的完全一样。例如,可能有些问题你没有设计恰当,又或者你在输入代码的时候发生了一点错误,等等。正常情况下,你应该回到设计环节或者调试程序。

我用按上面所说的编写了,可是运行后输出的是:

>>> =======================RESTART==========================
>>>
Backup FAILED
>>>

我觉得是因为上面的是在UNIX操作系统进行的,而我的是WINDOWS,我输入的需要备份的文件和目录,还有目标目录没输入正确,可是该怎么样输入呢?

最佳答案

你在cmd下面手工执行一下这个指令:


zip -qr target_file source_dir



怀疑你的环境不能用zip指令。

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
深圳市龙华镇有卫生学校吗?
北京申奥成功的时间
丽人布店在什么地方啊,我要过去处理事情
现在山西的焦炭多少钱一吨 1级2级都要
南通广电新人妙会文化传播有限公司这个地址在
DNF机械PK加点?高手进!说详细点!
求职复试之后多久可以收到通知?
一日吃仨枣,终生不显老,请问这句话科学吗?
求S.H.E《梦田》歌词
恋人之间一般谈什么事情比较多?
领导的笑脸和下属的笑脸有何区别?
改换一个字母变成另一个单词
DNF鬼泣圈圈哪些要加满啊?
后卫的资料?
腿软 无力怎么办
推荐资讯
学习机那个牌好
这块字模是什么年代的,有什么用途,请专家鉴
怎么只能打开牧场不能看农场咧
找能人帮我解决图纸
今天打了一下午的球,晚上吃了快半个榴莲,会
母婴世界蔡阳店在什么地方啊,我要过去处理事
双龙小车快修这个地址在什么地方,我要处理点
求钢铁新娘第二季全集下载
有没有好看的电影,推荐几个。
银钥匙可以开出A车吗
顺治年代的铜钱如何辩人真假?
谁有侠盗猎车:圣安地列斯的秘籍(全部、包括
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?