1. 程式人生 > >Python 3 自動化運維之目錄差異比較filecmp模組

Python 3 自動化運維之目錄差異比較filecmp模組

#目錄差異對比filecmp
import filecmp

#定義左目錄
leftDir = "/home/abc/dir1"
#定義右目錄
rightDir = "/home/abc/dir2"

#目錄比較 忽略test.py
dirObj = filecmp.dircmp(leftDir, rightDir, ['test.py'])
#輸出對比結果資料報表
dirObj.report() #比較當前指定目錄中的內容
dirObj.report_partial_closure()  #比較當前目錄及第一子目錄的內容
dirObj.report_full_closure()  #遞迴比較所有目錄內容
#列印輸出
#左目錄中檔案和目錄列表
print('left_list:'+str(dirObj.left_list))
#右目錄中的檔案和目錄
print('right_list:'+str(dirObj.right_list))
#兩邊共同存在的檔案或目錄
print('common:'+str(dirObj.common))
#只在左目錄中的檔案或目錄
print('left_only:'+str(dirObj.left_only))
#只在右目錄中的檔案或目錄
print('right_only:'+str(dirObj.right_only))
#兩邊都存在的子目錄
print('common_dirs:'+str(dirObj.common_dirs))
#兩邊都存在的子檔案
print('common_files:'+str(dirObj.common_files))
#兩邊都存在的子目錄(不同目錄型別或os.stat()記錄的錯誤)
print('common_funny:'+str(dirObj.common_funny))
#匹配相同的檔案
print('same_file:'+str(dirObj.same_files))
#不匹配的檔案
print('diff_files:'+str(dirObj.diff_files))
#兩邊目錄中存在 但無法比較的檔案
print('funny_files:'+str(dirObj.funny_files))

filecmp模組提供了三種操作方法:

1.cmp  單檔案對比

filecmp.cmp('a.txt', 'b.txt')

2.cmpfiles  多檔案對比

filecmp.cmpfiles('/home/abc/dir1', '/home/abc/dir2', ['f1', 'f2', 'f3', 'f4', 'f5'])

3.dircmp  目錄對比