python备份文件的脚本


Posted in Python onAugust 11, 2008

实际效果:假设给定目录"/media/data/programmer/project/python" ,备份路径"/home/diegoyun/backup/“ , 则会将python目录下的文件按照全路经备份到备份路径下,形如:

/home/diegoyun/backup/yyyymmddHHMMSS/python/xxx/yyy/zzz.....

import os 
import shutil 
import datetime def mainLogic(): 
    #add dirs you want to copy 
    backdir="I:\\backup"     
    copydirs=[] 
    copydirs.append("D:\\programmer") 
    copydirs.append("D:\\diegoyun")     
    print "Copying files  ===================" 
    start=datetime.datetime.now() 
    #gen a data folder for backup 
    backdir=os.path.join(backdir,start.strftime("%Y-%m-%d")) 
    #print "backdir is:"+backdir 
     
    kc=0 
    for d in copydirs: 
        kc=kc+copyFiles(d,backdir) 
    end=datetime.datetime.now() 
    print "Finished! ===================" 
    print "Total files : " + str(kc)  
    print "Elapsed time : " + str((end-start).seconds)+" seconds" 
def copyFiles(copydir,backdir): 
    prefix=getPathPrefix(copydir) 
    #print "prefix is:"+prefix     
    i=0 
    for dirpath,dirnames,filenames in os.walk(copydir): 
        for name in filenames: 
            oldpath=os.path.join(dirpath,name) 
            newpath=omitPrefix(dirpath,prefix) 
            print "backdir is:"+backdir             
            newpath=os.path.join(backdir,newpath) 
            print "newpath is:"+newpath 
            if os.path.exists(newpath)!=True: 
                os.makedirs(newpath)   
            newpath=os.path.join(newpath,name) 
            print "From:"+oldpath+" to:"+newpath 
            shutil.copyfile(oldpath,newpath) 
            i=i+1 
    return i     
def getPathPrefix(fullpath): 
    #Giving /media/data/programmer/project/ , get the prefix 
    #/media/data/programmer/ 
    l=fullpath.split(os.path.sep) 
    #print str(l[-1]=="")     
    if l[-1]=="": 
        tmp=l[-2] 
    else: 
        tmp=l[-1] 
    return fullpath[0:len(fullpath)-len(tmp)-1] 
def omitPrefix(fullpath,prefix): 
    #Giving /media/data/programmer/project/python/tutotial/file/test.py , 
    #and prefix is Giving /media/data/programmer/project/, 
    #return path as python/tutotial/file/test.py 
    return fullpath[len(prefix)+1:] 
mainLogic()
Python 相关文章推荐
收集的几个Python小技巧分享
Nov 22 Python
详解Swift中属性的声明与作用
Jun 30 Python
python去除空格和换行符的实现方法(推荐)
Jan 04 Python
python numpy 部分排序 寻找最大的前几个数的方法
Jun 27 Python
python如何实现一个刷网页小程序
Nov 27 Python
python替换字符串中的子串图文步骤
Jun 19 Python
使用 Python 合并多个格式一致的 Excel 文件(推荐)
Dec 09 Python
pytorch-神经网络拟合曲线实例
Jan 15 Python
python 解决pycharm运行py文件只有unittest选项的问题
Sep 01 Python
Python爬取微信小程序Charles实现过程图解
Sep 29 Python
pyqt5实现井字棋的示例代码
Dec 07 Python
Pytorch之扩充tensor的操作
Mar 04 Python
Python 文件操作技巧(File operation) 实例代码分析
Aug 11 #Python
python下如何让web元素的生成更简单的分析
Jul 17 #Python
py中的目录与文件判别代码
Jul 16 #Python
Python Mysql自动备份脚本
Jul 14 #Python
python远程登录代码
Apr 29 #Python
复制粘贴功能的Python程序
Apr 04 #Python
推荐下python/ironpython:从入门到精通
Oct 02 #Python
You might like
PHP 身份验证方面的函数
2009/10/11 PHP
常用的PHP数据库操作方法(MYSQL版)
2011/06/08 PHP
PHP spl_autoload_register实现自动加载研究
2011/12/06 PHP
PHP文件锁定写入实例解析
2014/07/14 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
jquery.validate使用攻略 第三部
2010/07/01 Javascript
window.parent与window.openner区别介绍
2012/04/12 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
不到30行JS代码实现Excel表格的方法
2014/11/15 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
JavaScript生成图形验证码
2020/08/24 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
2017/12/15 Javascript
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
微信小程序仿微信运动步数排行(交互)
2018/07/13 Javascript
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
jQuery实现简单飞机大战
2020/07/05 jQuery
Vue指令实现OutClick的示例
2020/11/16 Javascript
Python写的一个简单监控系统
2015/06/19 Python
详谈python read readline readlines的区别
2017/09/22 Python
Python实现读取json文件到excel表
2017/11/18 Python
Python实现学生成绩管理系统
2020/04/05 Python
python实现Decorator模式实例代码
2018/02/09 Python
使用python绘制3维正态分布图的方法
2018/12/29 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
2019/04/02 Python
Flask配置Cors跨域的实现
2019/07/12 Python
在keras中model.fit_generator()和model.fit()的区别说明
2020/06/17 Python
.NET笔试题(20个问题)
2016/02/02 面试题
介绍一下EJB的体系结构
2012/08/01 面试题
DOM和JQuery对象有什么区别
2016/11/11 面试题
代理班主任的自我评价
2014/02/04 职场文书
初中军训感想300字
2014/03/05 职场文书
初中班主任评语
2014/04/24 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
2015年国培研修感言
2015/08/01 职场文书