# -*- coding:gb2312 -*-
import os
import shutil
import datetime
'''
作用:将目录备份到其他路径
实际效果:
将 指定目录的“/Python/testPythonFiles”目录下的所有文件
备份到 另一指定目录的“\Code\backup”
用法:更改这2个参数:
backdir:备份目的地
copydirs:想要备份的文件夹
'''
def mainLogic():
#add dirs you want to copy
backdir="D:\\baiDu\\.....\\Code\\backup"
print("your target backup folder:" + backdir)
copydirs=[]
copydirs.append("D:\\baiDu\\......\\Python\\testPythonFiles");
print("copying files --- ---")
start=datetime.datetime.now()
#generate a data folder for backup
backdir=os.path.join(backdir,start.strftime("%Y-%m-%d"))
print("back dir 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("new path 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):
l=fullpath.split(os.path.sep)
if l[-1]=="":
tmp=l[-2]
else:
tmp=l[-1]
return fullpath[0:len(fullpath)-len(tmp)-1]
def omitPrefix(fullpath,prefix):
return fullpath[len(prefix)+1:]
mainLogic()
运行结果: