在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    python 模塊 filecmp & difflib

    主要介紹兩個(gè) Python 中常用于比較數(shù)據(jù)的模塊,一個(gè)是 filecmp 模塊,另一個(gè)是 difflib 模塊。其中,前者主要用于比較文件目錄,后者主要用于比較序列的類和函數(shù),下面具體介紹兩者的區(qū)別。

    filecmp 模塊

    filecmp 模塊作為 Python 提供的標(biāo)準(zhǔn)庫之一,無需安裝,模塊定義了用于比較文件及目錄的函數(shù),對服務(wù)器上的文件目錄的校驗(yàn)非常實(shí)用。

    cmp(f1,f2)函數(shù)

    cmp(f1,f2)函數(shù)用于比較兩個(gè)文件是否相同,如果 f1 和 f2 相等則返回True,否則返回False。例如:

    #新建兩個(gè)文件f1 和 f2#f1存儲的數(shù)據(jù)是1,2,3#f2存儲的數(shù)據(jù)是4,5,6import filecmpprint(filecmp.cmp(“f1″,”f1”))print(filecmp.cmp(“f1″,”f2”))FalseTrue

    cmpfiles(dir1, dir2, common[, shallow])函數(shù)

    cmpfiles(dir1, dir2, common[, shallow])函數(shù)可以用于比較兩個(gè)文件夾內(nèi)指定的文件是否相等,參數(shù)dir1 和 dir2 是兩個(gè)文件夾路徑,參數(shù)common是指定要比較的文件名列表。

    例如,cmpfiles(‘a(chǎn)’, ‘b’, [‘c’, ‘d/e’]) 將會比較 a/c 與 b/c 以及 a/d/e 與 b/d/e。’c’ 和 ‘d/e’ 將會各自出現(xiàn)在返回的三個(gè)列表里的某一個(gè)列表中。

    clear_cache()函數(shù)

    clear_cache()函數(shù)可以清除文件比較緩沖區(qū),當(dāng)比較的文件不斷地快速修改時(shí),就可以使用這個(gè)函數(shù)來更新文件的信息。

    除了以上三個(gè)函數(shù)外,filecmp 還包含一個(gè)用于比較目錄的類——dircmp。

    類dircmp(a,b[,ignore[,hide]])用于創(chuàng)建一個(gè)比較目錄 a 和 b 的新的目錄比較對象。ignore 是需要忽略的文件名列表,且默認(rèn)為 filecmp.DEFAULT_IGNORES。hide 是需要隱藏的文件名列表,且默認(rèn)為 [os.curdir, os.pardir]。

    dircmp 類提供了三個(gè)方法用于比較報(bào)告:

    • report() 將 a 與 b 之間的比較結(jié)果打印出來
    • report_partial_closure() 打印 a 與 b 及共同直接子目錄的比較結(jié)果
    • report_full_closure() 打印 a 與 b 及共同子目錄比較結(jié)果(遞歸地)

    difflib 模塊

    difflib 模塊是 Python 提供的比較序列差異的功能,包含以下三個(gè)類:

    • Differ 對字符串進(jìn)行比較
    • HtmlDiff 將比較結(jié)果輸出為html格式
    • SequenceMatcher 任意類型序列的比較 (可以比較字符串)

    Differ類

    Differ類的作用是比較由文本行組成的序列,并產(chǎn)生可供人閱讀的差異或增量信息。Differ 統(tǒng)一使用 SequenceMatcher 來完成行序列的比較以及相似(接近匹配)行內(nèi)部字符序列的比較。

    雙字母代碼

    含義

    ’- ‘

    行為序列 1 所獨(dú)有

    ’+ ‘

    行為序列 2 所獨(dú)有

    ’ ‘

    行在兩序列中相同

    ’? ‘

    行不存在于任一輸入序列

    以 ‘?’ 打頭的行嘗試將視線引至行以外而不存在于任一輸入序列的差異。 如果序列包含制表符則這些行可能會令人感到迷惑。

    HtmlDiff類

    HtmlDiff類可以被用來創(chuàng)建HTML表格 (或者說包含表格的html文件) ,兩邊對應(yīng)展示或者行對行的展示比對差異結(jié)果。

    make_file(fromlines, tolines [, fromdesc][, todesc][, context][, numlines])

    make_table(fromlines, tolines [, fromdesc][, todesc][, context][, numlines])

    以上兩個(gè)方法都可以用來生成包含一個(gè)內(nèi)容為比對結(jié)果的表格的html文件,并且部分內(nèi)容會高亮顯示。

    SequenceMatcher類

    SequenceMatcher類可用于比較任何類型的序列對,只要序列元素為 hashable 對象。其思路是找到不包含“垃圾”元素的最長連續(xù)匹配子序列;所謂“垃圾”元素是指其在某種意義上沒有價(jià)值,例如空白行或空白符。

    import difflibfrom pprint import pprinta = ‘pythonclub.org is wonderful’b = ‘Pythonclub.org also wonderful’s = difflib.SequenceMatcher(None, a, b)print (“s.get_matching_blocks():”)pprint(s.get_matching_blocks())print (“s.get_opcodes():”)for tag, i1, i2, j1, j2 in s.get_opcodes(): print (“%7s a[%d:%d] (%s) b[%d:%d] (%s)” % (tag, i1, i2, a[i1:i2], j1, j2, b[j1:j2]))

    輸出結(jié)果:

    s.get_matching_blocks():[Match(a=1, b=1, size=14), Match(a=16, b=17, size=1), Match(a=17, b=19, size=10), Match(a=27, b=29, size=0)]s.get_opcodes():replace a[0:1] (p) b[0:1] (P) equal a[1:15] (ythonclub.org ) b[1:15] (ythonclub.org )replace a[15:16] (i) b[15:17] (al) equal a[16:17] (s) b[17:18] (s) insert a[17:17] () b[18:19] (o) equal a[17:27] ( wonderful) b[19:29] ( wonderful)

    總結(jié)

    本節(jié)內(nèi)容介紹了 Python 中 filecmp 和 difflib 兩個(gè)模塊的常用操作,對于實(shí)現(xiàn)文件及目錄的比較提供了支撐。

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
    用戶投稿
    上一篇 2022年7月4日 09:20
    下一篇 2022年7月4日 09:21

    相關(guān)推薦

    • 存儲過程語法(sql server存儲過程語法)

      今天小編給各位分享存儲過程語法的知識,其中也會對sql server存儲過程語法進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧! oracle存儲過程基本語法…

      2022年11月26日
    • 科比19歲女兒遭自稱與她生“科比式孩子”男子跟蹤騷擾

      極目新聞記者王亮亮黃佳琪 據(jù)??怂剐侣劸W(wǎng)報(bào)道,當(dāng)?shù)貢r(shí)間11月21日,已故籃球巨星科比·布萊恩特的長女娜塔莉亞·布萊恩特21日向法院提交臨時(shí)限制令,聲稱這位32歲的前科從十幾歲起就騷…

      2022年11月24日
    • 免費(fèi)清理c盤的軟件(清理c盤空間不影響系統(tǒng))

      電腦用久了慢如龜速,還卡頓,這最大的原因啊就是C盤空間不足造成的。 即使電腦配置再好,或者硬盤再快,如果長時(shí)間沒有打掃C盤,打開文件或者穩(wěn)定之類的,都卡得讓人頭大。 這時(shí)候呢不要去…

      2022年11月24日
    • pdf虛擬打印機(jī)(添加pdf虛擬打印機(jī))

      本文主要講的是pdf虛擬打印機(jī),以及和添加pdf虛擬打印機(jī)相關(guān)的知識,如果覺得本文對您有所幫助,不要忘了將本文分享給朋友。 pdf虛擬打印機(jī)具體是什么功能? 電腦虛擬打印機(jī)的功能有…

      2022年11月24日
    • 大疆發(fā)布DJI O3 Air Unit圖傳解決方案 售價(jià)1499元

      大疆日前發(fā)布了最新的DJI O3 Air Unit 數(shù)字圖傳解決方案,該方案將DJI O3+ 圖傳與1/1.7 英寸影像傳感器相機(jī)模塊集于一身,具有高畫質(zhì)、低延時(shí)、遠(yuǎn)距離等特點(diǎn)。 …

      2022年11月23日
    • ftp端口號(ftp端口號可以自定義嗎)

      FTP端口號是21在FTP服務(wù)器中,我們往往會給不同的部門或者某個(gè)特定的用戶設(shè)置一個(gè)帳戶但是,這個(gè)賬戶有個(gè)特點(diǎn),就是其只能夠訪問自己的主目錄服務(wù)器通過這種方式來保障FTP服務(wù)上其他…

      2022年11月21日
    • 軟件開發(fā)階段的6大劃分詳解(需求規(guī)格說明書在哪個(gè)階段)

      1計(jì)劃 對所要解決的問題進(jìn)行總體定義,包括了解用戶的要求及現(xiàn)實(shí)環(huán)境,從技術(shù)、經(jīng)濟(jì)和社會因素等3個(gè)方面研究并論證本軟件項(xiàng)目的可行性,編寫可行性研究報(bào)告,探討解決問題的方案,并對可供使…

      2022年11月19日
    • 給手機(jī)安裝了Windows 11(手機(jī)上玩電腦游戲的軟件)

      電腦上體驗(yàn)了一番Windows 11 ,感覺怎么樣?接下來想要在手機(jī)上嘗試嘗試嗎?不是遠(yuǎn)程桌面,也并不是虛擬機(jī),而是手機(jī)直接運(yùn)行原生的win11系統(tǒng)! 那么最近小編就看到網(wǎng)上不少朋…

      2022年11月18日
    • 申請疫工補(bǔ)必須要入會嗎

      一、申報(bào)流程 1.微信搜索 “天山工惠” 小程序 2.點(diǎn)擊海報(bào)或找到“疫工補(bǔ)” 模塊通過手機(jī)號登錄,按要求內(nèi)容完成申請(不是工會會員的請先點(diǎn)擊“入會轉(zhuǎn)會”模塊加入工會后再申請) 3…

      2022年11月17日
    • 字體庫在哪個(gè)文件夾(字體庫在哪個(gè)文件夾里)

      今天小編給各位分享字體庫在哪個(gè)文件夾的知識,其中也會對字體庫在哪個(gè)文件夾里進(jìn)行解釋,如果能碰巧解決你現(xiàn)在面臨的問題,別忘了關(guān)注本站,現(xiàn)在開始吧! 字體庫在Windows文件夾里面的…

      2022年11月17日

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息