python3校驗源與備份目錄差異

2021-08-25 11:21:24 字數 2370 閱讀 4348

有時候我們無法確認備份目錄與源目錄檔案是否保持一致,包括源目錄中的新檔案或目錄、更新檔案或目錄有無成功同步,定期進行校驗,沒有成功則希望有針對性地進行補備份。本示例使用了filecmp模組的left_only、diff_files方法遞迴獲取源目錄的更新項,再通過shutil.copyfile、os.makedirs方法對更新項進行複製,最終保持一致狀態。詳細原始碼如下:

#!/usr/bin/env python

import os, sys

import filecmp

import re

import shutil

holderlist=

defcompareme

(dir1, dir2):

#遞迴獲取更新項函式

dircomp=filecmp.dircmp(dir1,dir2)

only_in_one=dircomp.left_only #源目錄新檔案或目錄

diff_in_one=dircomp.diff_files #不匹配檔案,源目錄檔案已發生變化

dirpath=os.path.abspath(dir1) #定義源目錄絕對路徑

#將更新檔名或目錄追加到holderlist

if len(dircomp.common_dirs) > 0: #判斷是否存在相同子目錄,以便遞迴

for item in dircomp.common_dirs: #遞迴子目錄

compareme(os.path.abspath(os.path.join(dir1,item)), \

os.path.abspath(os.path.join(dir2,item)))

return holderlist

defmain

():if len(sys.argv) > 2: #要求輸入源目錄與備份目錄

dir1=sys.argv[1]

dir2=sys.argv[2]

else:

print("usage: ", sys.argv[0], "datadir backupdir")

sys.exit()

source_files=compareme(dir1,dir2) #對比源目錄與備份目錄

dir1=os.path.abspath(dir1)

ifnot dir2.endswith('/'): dir2=dir2+'/'

#備份目錄路徑加「/」符

dir2=os.path.abspath(dir2)

destination_files=

createdir_bool=false

print(source_files)

try:

for item in source_files: # 遍歷返回的差異檔案或目錄清單

destination_dir = re.sub(dir1, dir2, item) # 將源目錄差異路徑清單對應替換成

# 備份目錄

if os.path.isdir(item): # 如果差異路徑為目錄且不存在,則在備份目錄中建立

ifnot os.path.exists(destination_dir):

os.makedirs(destination_dir)

createdir_bool = true

# 再次呼叫compareme函式標記

except typeerror as e:

print('except:', e)

return

if createdir_bool: #重新呼叫compareme函式,重新遍歷新建立目錄的內容

destination_files=

source_files=

source_files=compareme(dir1,dir2) #呼叫compareme函式

for item in source_files: #獲取源目錄差異路徑清單,對應替換成備份目錄

destination_dir=re.sub(dir1, dir2, item)

print("update item:")

print(source_files) #輸出更新項列表清單

copy_pair=list(zip(source_files,destination_files)) #將源目錄與備份目錄檔案清單拆分成元組

for item in copy_pair:

if os.path.isfile(item[0]): #判斷是否為檔案,是則進行複製操作

shutil.copyfile(item[0], item[1])

if __name__ == '__main__':

main()

python3換源 Python3 換源

pip安裝源 介紹2 常用pip源 豆瓣 阿里 3 加速安裝的命令 pip install i 模組名 永久配置安裝源 windows 2 新建 pip 資料夾並在資料夾中新建 pip.ini 配置檔案 3 新增 pip.ini 配置檔案內容 macos linux 1 在使用者根目錄下 下建立 p...

Python之 校驗源目錄與備份目錄差異

有時候我們無法確認備份目錄與源目錄的檔案是否保持一致,包括源目錄中的新檔案或目錄,更新檔案或目錄有無成功同步,定期進行校驗,沒有成功則希望有針對性的進行補備份。本例項使用了filecmp模組的left only,diff files方法地櫃獲取源目錄的更新項,再通過shutil.copyfile o...

python換源 python3 換源

1.原因 pip是很強大的模組安裝工具,但是由於國外官方pypi經常被牆,導致不可用。所以我們最好是更換pip源,這樣就能解決被牆導致的裝不上庫的問題。2.可用源 網上有很多可用的源 豆瓣 清華 清華大學的pip源,它是官網pypi的映象,每隔5分鐘同步一次,推薦使用。3.使用 3.1 臨時使用 可...