2020年7月22日 星期三

如何比較兩個目錄檔案的差異

最近AEDT 2020R2剛釋出,筆者想要找出2020R2跟2020R1相比多/少了那些.aedtz範例,.pdf檔或其他檔案。因此寫了一個小的script來輸出兩個版本檔案的差異。輸出2020R1有的檔案而2020R2沒有的,以及2020R2有的檔案而2020R1沒有的。比較完成之後輸出到compare.txt文檔並自動開啟notepad++顯示,兩者中間用分隔線隔開以資區別。程式碼如下,可以在Spyder或AEDT當中執行:

dir1 = r'C:\Program Files\AnsysEM\AnsysEM20.1'
dir2 = r'C:\Program Files\AnsysEM\AnsysEM20.2'
outputtxt = 'd:/demo/compare.txt'

import os
from filecmp import dircmp

result_right=[]
result_left=[]

def print_diff_files(dcmp):
    global result_right, result_left
    for name in dcmp.right_only:
        result_right.append('{}\\{}\n'.format(dcmp.right, name))
    for name in dcmp.left_only:
        result_left.append('{}\\{}\n'.format(dcmp.right, name))    
    for sub_dcmp in dcmp.subdirs.values():
        print_diff_files(sub_dcmp)

dcmp = dircmp(dir1, dir2)
print_diff_files(dcmp)
with open(outputtxt, 'w') as f:
    f.writelines(result_left)
    f.writelines('-'*120+'\n')
    f.writelines(result_right)

os.system('notepad++ d:/demo/compare.txt')

(圖一) 兩個目錄之間檔案差異比較


沒有留言:

張貼留言