由于平时每天下班时总是要将已写的代码备份,所以有了写个自动备份指定文件到压缩包的工具,简单过程如下:
1.删除项目编译产生的临时文件
2.将项目压缩至.rar压缩包并移至指定文件夹
3.备份完毕关机
方法:删除临时文件是用bat批处理,python调用,当然python自己可以,可是我刚接触,不熟;压缩是调用winrar的命令行,关机也是调用cmd。。。。
刚接触,先这样做,虽然直接用批处理就可以。源码如下
#-*- coding=gbk -*-
#filename:backup_ver1.py
import os
import time
import thread
myFlag=0
def timecount(n):
for i in range(n,0,-1):
global myFlag
if myFlag == 0:
print '%s钟后自动关机,取消请按【回车】...'%str(i)
else:
break
time.sleep(1)
if i==1:
os.system('shutdown -s -t 0 -f')
print '关机开始'
print '线程自动退出'
print '******关机取消已取消******'
print '再次按【回车】键退出'
if __name__=='__main__':
#删除临时文件,调用已经写好的bat文件
batpath=ur'F:\项目\XXXX\源码\XX\Del.bat'
ubatpath=batpath.encode('gbk')
#备份文件
source = ur'F:\项目\XXXX\源码\XX'
target_dir=ur'D:\XX\\'
target=target_dir+u'XX'+time.strftime('%Y%m%d')+'.rar'
zip_command='rar a -k -r -s -m3 '+target+' '+source
uzip_command = zip_command.encode('gbk')
print 'Begin Backup ...'
cmd=[ubatpath,uzip_command]
if os.system('&&'.join(cmd)) == 0:
print 'Successful backup to',target
else:
print 'Backup Failed!'
print '------------------------备份结束,倒计时关机开始------------------------'
#倒计时关机
print '关机倒计时开始,按空格取消关机'
thread.start_new_thread(timecount,(10,))
if(raw_input()=='' ):
myFlag=1
print '****回车已按下****'
raw_input()
在写这个小程序的时候遇到一个问题,半天才解决,郁闷,那就是中文编码的问题,这个问题在下片文章的记录说明下。
待改进:
1.压缩后的压缩包中的文件夹层数,这样压缩的是把待压缩的文件夹所在的所有上层目录都压缩进去了,要改进
2.尽量不调用cmd命令,用纯python代码编写
3.调用百度云接口,直接将压缩文件上传至百度云制定目录
这是暂时待改进的地方,有空写下