如果進行單個文件的比較,可以使用difflib模塊。雖然filecmp模塊也能夠進行單個文件的對比,但是前者能夠提供觀感更好的報告。如果我們只是想看一下兩個目錄中的某個文件是否一致而不關(guān)系其中的內(nèi)容,那么后者或許是更改選的選擇。
如果進行目錄的對比,那么可以使用filecmp模塊了。
在IPython中進行簡單的命令交互演示功能如下:
In [1]: import filecmpIn [2]: lsChapter_01/ Chapter_02/In [3]: dirobj = filecmp.dircmp('Chapter_01','Chapter_02')
輸出兩個目錄差異報告
In [4]: dirobj.report()diff Chapter_01 Chapter_02Only in Chapter_01 : ['ip.py', 'os_mem.py', 'pid.py']Only in Chapter_02 : ['d1.py', 'd2.py', 'diff.py', 'diff.zip', 'dns_parser.py', 'join.py', 'pydiff.py', 'report.html']Identical files : ['c01.py']
輸出部分報告(最外面的目錄曾經(jīng),這里與第一個無差異是因為沒有子目錄)
In [5]: dirobj.report_partial_closure()diff Chapter_01 Chapter_02Only in Chapter_01 : ['ip.py', 'os_mem.py', 'pid.py']Only in Chapter_02 : ['d1.py', 'd2.py', 'diff.py', 'diff.zip', 'dns_parser.py', 'join.py', 'pydiff.py', 'report.html']Identical files : ['c01.py']
輸出全部報告
In [6]: dirobj.report_full_closure()diff Chapter_01 Chapter_02Only in Chapter_01 : ['ip.py', 'os_mem.py', 'pid.py']Only in Chapter_02 : ['d1.py', 'd2.py', 'diff.py', 'diff.zip', 'dns_parser.py', 'join.py', 'pydiff.py', 'report.html']Identical files : ['c01.py']
查看一下輸出結(jié)果對象格式,這個格式略顯奇怪了一些
In [7]: type(dirobj.report_full_closure())diff Chapter_01 Chapter_02Only in Chapter_01 : ['ip.py', 'os_mem.py', 'pid.py']Only in Chapter_02 : ['d1.py', 'd2.py', 'diff.py', 'diff.zip', 'dns_parser.py', 'join.py', 'pydiff.py', 'report.html']Identical files : ['c01.py']Out[7]: NoneType
嘗試把結(jié)果對象轉(zhuǎn)換為字符串
In [8]: str(dirobj.report_full_closure())diff Chapter_01 Chapter_02Only in Chapter_01 : ['ip.py', 'os_mem.py', 'pid.py']Only in Chapter_02 : ['d1.py', 'd2.py', 'diff.py', 'diff.zip', 'dns_parser.py', 'join.py', 'pydiff.py', 'report.html']Identical files : ['c01.py']Out[8]: 'None'
輸出左邊目錄的清單
In [9]: dirobj.left_listOut[9]: ['c01.py', 'ip.py', 'os_mem.py', 'pid.py']
右邊目錄清單
In [10]: dirobj.right_listOut[10]: ['c01.py', 'd1.py', 'd2.py', 'diff.py', 'diff.zip', 'dns_parser.py', 'join.py', 'pydiff.py', 'report.html']
僅在右邊目錄中存在的文件清單
In [11]: dirobj.right_onlyOut[11]: ['d1.py', 'd2.py', 'diff.py', 'diff.zip', 'dns_parser.py', 'join.py', 'pydiff.py', 'report.html']
共有的子目錄
新聞熱點
疑難解答