最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

python備份文件

來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 14:27:25
文檔

python備份文件

python備份文件:任務(wù):你想對某個目錄樹中的被修改過的文件多次備份,以防止某次修改意外地抹去了你的編輯結(jié)果。 周期性的執(zhí)行以下python腳本可以對指定目錄下的文件進行備份。#-*- coding:utf-8 -*- import sys,os,shutil,filecmp MAXVERSIONS = 1
推薦度:
導讀python備份文件:任務(wù):你想對某個目錄樹中的被修改過的文件多次備份,以防止某次修改意外地抹去了你的編輯結(jié)果。 周期性的執(zhí)行以下python腳本可以對指定目錄下的文件進行備份。#-*- coding:utf-8 -*- import sys,os,shutil,filecmp MAXVERSIONS = 1

任務(wù):

你想對某個目錄樹中的被修改過的文件多次備份,以防止某次修改意外地抹去了你的編輯結(jié)果。 周期性的執(zhí)行以下python腳本可以對指定目錄下的文件進行備份。

#-*- coding:utf-8 -*-
import sys,os,shutil,filecmp
MAXVERSIONS = 100
def backup(tree_top, bakdir_name="bakdir"):
for dir,subdirs,files in os.walk(tree_top):
#確保每個目錄都有一個備份目錄
backup_dir = os.path.join(dir,bakdir_name)
if not os.path.exists(backup_dir):
os.makedirs(backup_dir)
#停止對備份目錄的遞歸
subdirs[:] = [d for d in subdirs if d != bakdir_name]
for file in files:
filepath = os.path.join(dir,file)
destpath = os.path.join(backup_dir,file)
#檢查以前的版本是否存在
for index in xrange(MAXVERSIONS):
backfile = '%s.%2.2d' % (destpath, index)
if not os.path.exists(backfile):
break
if index > 0:
old_backup = '%s.%2.2d' % (destpath,index-1)
abspath = os.path.abspath(filepath)
try:
if os.path.isfile(old_backup) and filecmp.cmp(abspath, old_backup,shallow=False):
continue
except OSError:
pass
try:
shutil.copy(filepath,backfile)
except OSError:
pass
if __name__ == '__main__':
try:
tree_top = sys.argv[1]
except IndexError:
tree_top = '.'
backup(tree_top)

如果想針對某個特定后綴名的文件進行備份,(或?qū)Τツ硞€擴展名之外的文件進行備份);在 for file in files 循環(huán)內(nèi)加一個適當?shù)臏y試即可:

for file in files:
 name,ext = os.path.splitext(file)
 if ext not in ('.py','.txt','.doc'):
 continue

注意以下代碼,避免os.walk遞歸到要備份的子目錄。當os.walk迭代開始之后,os.walk根據(jù)subdirs來進行子目錄迭代。這個關(guān)于os.walk的細節(jié)也是生成器應(yīng)用的一個絕佳例子,它演示了生成器是如何通過迭代的代碼獲取信息,同時又是如何反過來影響迭代。

subdirs[:] = [d for d in subdirs if d != bakdir_name]

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

python備份文件

python備份文件:任務(wù):你想對某個目錄樹中的被修改過的文件多次備份,以防止某次修改意外地抹去了你的編輯結(jié)果。 周期性的執(zhí)行以下python腳本可以對指定目錄下的文件進行備份。#-*- coding:utf-8 -*- import sys,os,shutil,filecmp MAXVERSIONS = 1
推薦度:
標簽: 備份 文件 文件夾
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top