兩周前開工的維護作業自動化軟體周五本已竣工, 但搭檔同事提出新的需求, 希望能在軟體中添加比對兩台機器相同資料表內的 record 的自動比對功能, 兩台互為備援的機器照理說每一個 peer 資料表內容應該一樣, 但有時就是會因為特殊問題而新增並一台所沒有的資料, 以前都要先 dump 資料表, 然後匯入 Excel 中左右對照人工比對, 實在很耗時間, 如能寫到軟體中一鍵比對豈不美哉.
從周五晚上開始新增這項功能, 今天晚上終於完工啦. 比對的方法很簡單, 核心概念就只是利用集合的差集運算而已. 工作上實際處理的資料是 dump 出來的龐大一列列字串資料, 但下面為了說明方便簡化為利用 split('\n') 後的兩個字串串列, 例如 :
lista=['apple', 'banana', 'melon', 'grape']
listb=['banana', 'guava', 'melon', 'kiwi']
diff1=list(set(lista) - set(listb))
diff2=list(set(listb) - set(lista))
print(diff1)
print(diff2)
執行結果如下 :
>>> %Run test9.py
['grape', 'apple']
['kiwi', 'guava']
第一個結果是 a 串列有但 b 串列沒有的; 第二個結果是 b 串列有但 a 串列沒有的.
沒有留言:
張貼留言