使用Python進(jìn)行目錄的對(duì)比方法
如果進(jìn)行單個(gè)文件的比較,可以使用difflib模塊。雖然filecmp模塊也能夠進(jìn)行單個(gè)文件的對(duì)比,但是前者能夠提供觀感更好的報(bào)告。如果我們只是想看一下兩個(gè)目錄中的某個(gè)文件是否一致而不關(guān)系其中的內(nèi)容,那么后者或許是更改選的選擇。
如果進(jìn)行目錄的對(duì)比,那么可以使用filecmp模塊了。
在IPython中進(jìn)行簡(jiǎn)單的命令交互演示功能如下:
In [1]: import filecmp
In [2]: ls
Chapter_01/ Chapter_02/
In [3]: dirobj = filecmp.dircmp('Chapter_01','Chapter_02')
輸出兩個(gè)目錄差異報(bào)告
In [4]: dirobj.report() diff Chapter_01 Chapter_02 Only 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']
輸出部分報(bào)告(最外面的目錄曾經(jīng),這里與第一個(gè)無(wú)差異是因?yàn)闆](méi)有子目錄)
In [5]: dirobj.report_partial_closure() diff Chapter_01 Chapter_02 Only 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']
輸出全部報(bào)告
In [6]: dirobj.report_full_closure() diff Chapter_01 Chapter_02 Only 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é)果對(duì)象格式,這個(gè)格式略顯奇怪了一些
In [7]: type(dirobj.report_full_closure()) diff Chapter_01 Chapter_02 Only 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é)果對(duì)象轉(zhuǎn)換為字符串
In [8]: str(dirobj.report_full_closure()) diff Chapter_01 Chapter_02 Only 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_list Out[9]: ['c01.py', 'ip.py', 'os_mem.py', 'pid.py']
右邊目錄清單
In [10]: dirobj.right_list Out[10]: ['c01.py', 'd1.py', 'd2.py', 'diff.py', 'diff.zip', 'dns_parser.py', 'join.py', 'pydiff.py', 'report.html']
僅在右邊目錄中存在的文件清單
In [11]: dirobj.right_only Out[11]: ['d1.py', 'd2.py', 'diff.py', 'diff.zip', 'dns_parser.py', 'join.py', 'pydiff.py', 'report.html']
共有的子目錄
In [12]: dirobj.common_dirs Out[12]: []
共有的文件
In [13]: dirobj.common_files Out[13]: ['c01.py']
無(wú)法比較的目錄
In [14]: dirobj.common_funny Out[14]: []
相同的文件
In [15]: dirobj.same_files Out[15]: ['c01.py']
無(wú)法比較的文件
In [16]: dirobj.funny_files Out[16]: []
在MATLAB中有一個(gè)我經(jīng)常使用的命令——visdiff,可以用于文件或者目錄的對(duì)比。如此比較下來(lái),Python基本上也提供了MATLAB相應(yīng)命令所提供的功能。不過(guò),MATLAB的使用更為簡(jiǎn)單,似乎也更為細(xì)致一些。不過(guò),考慮使用Python還是有必要的。首先是Python免費(fèi),其次是啟動(dòng)速度大概比MATLAB快不少吧!除此之外,現(xiàn)在的Python湊代碼也是蠻簡(jiǎn)單的,在自己需要的時(shí)候幾行代碼拼湊一般就能夠?qū)崿F(xiàn)自己要的功能了。
以上這篇使用Python進(jìn)行目錄的對(duì)比方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Pycharm下載pyinstaller報(bào)錯(cuò):You?should?consider?upgrading?via
這篇文章主要給大家介紹了關(guān)于Pycharm下載pyinstaller報(bào)錯(cuò):You?should?consider?upgrading?via?the?'python?-m?pip?install?--upgrade?pip'?command的解決方法,需要的朋友可以參考下2022-02-02
python圖形界面開(kāi)發(fā)之wxPython樹(shù)控件使用方法詳解
這篇文章主要介紹了python圖形界面開(kāi)發(fā)之wxPython樹(shù)控件使用方法詳解,需要的朋友可以參考下2020-02-02
如何利用Python隨機(jī)從list中挑選一個(gè)元素
這篇文章主要介紹了如何利用Python隨機(jī)從list中挑選一個(gè)元素,文章通過(guò)研究從列表中選擇隨機(jī)元素的不同實(shí)現(xiàn)方法展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05
tensorflow 獲取所有variable或tensor的name示例
今天小編就為大家分享一篇tensorflow 獲取所有variable或tensor的name示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01
Jupyter Notebook運(yùn)行代碼無(wú)反應(yīng)問(wèn)題及解決方法
這篇文章主要介紹了Jupyter Notebook運(yùn)行代碼無(wú)反應(yīng)問(wèn)題及解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
python Qt5實(shí)現(xiàn)窗體跟蹤鼠標(biāo)移動(dòng)
今天小編就為大家分享一篇python Qt5實(shí)現(xiàn)窗體跟蹤鼠標(biāo)移動(dòng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12
Python?Fire中兩種命令行參數(shù)靈活設(shè)置方式詳解
Python的Fire庫(kù),一個(gè)用來(lái)生成命令行工具的的庫(kù),這篇文章主要針對(duì)命令行參數(shù),補(bǔ)充兩種更加靈活的設(shè)置方式,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01

