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


Python入門經典實例(四)



分享到:


相關文章: