Python入门经典实例(四)

4 实战:文件备份小程序

import os

import shutil

import datetime

”’

作用:将目录备份到其他路径。

实际效果:

假设给定目录”
/media/data/programmer/project/python” ,

备份路径”/home/diegoyun/backup/“ ,

则会将python目录备份到备份路径下,形如:

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

用法:更改这两个参数.

backdir:备份目的地.

copydirs:想要备份的文件夹.

”’

def mainLogic():

# add dirs you want to copy

backdir = ” d:\test ”

print (backdir)

copydirs = []

copydirs.append( ” d:\temp ” );

# copydirs.append(“d:\test”)

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()

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年1月5日
下一篇 2020年1月5日

相关推荐