Python 3.x (2) :檔案,目錄和路徑
阿新 • • 發佈:2019-02-04
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()
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
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 " ))
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) +
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()