通過Python模組filecmp 對檔案比較

2021-08-20 18:51:09 字數 1801 閱讀 2948

filecmp定義了兩個函式,用於方便地比較檔案與資料夾:

filecmp.cmp(f1, f2[, shallow]):

比較兩個檔案的內容是否匹配。引數f1, f2指定要比較的檔案的路徑。可選引數shallow指定比較檔案時是否需要考慮檔案本身的屬性(通過   os.stat函式可以獲得檔案屬性)。如果檔案內容匹配,函式返回true,否則返回false,

import filecmp

s = filecmp.cmp("qin.txt", "jian.txt")

print(s)

執行結果如下:

如果倆檔案相同則返回true , 如果不同則返回false

filecmp.cmpfiles(dir1, dir2, common[, shallow]):

比較兩個資料夾內指定檔案是否相等。引數dir1, dir2指定要比較的資料夾,引數common指定要比較的檔名列表。函式返回包含3個list元素的元組,分別表示匹配、不匹配以及錯誤的檔案列表。錯誤的檔案指的是不存在的檔案,或檔案被瑣定不可讀,或沒許可權讀檔案,或者由於其他原因訪問不了該檔案。

import filecmp

match,mismatch,errors = filecmp.cmpfiles("qin", "fu",['a.txt','b.txt'])

print("%s\n%s\n%s"%(match,mismatch,errors))

執行結果如下:

['a.txt'] -- 表示兩個檔案都有該檔案,並且完全匹配

['b.txt'] -- 表示兩個檔案都有該檔案,但是不匹配

-- 表示沒有錯誤的檔案

filecmp模組中定義了乙個dircmp類,用於比較資料夾,

通過該模擬較兩個資料夾,可以獲取一些詳細的比較結果(如只在a資料夾存在的檔案列表),並支援子資料夾的遞迴比較。

dircmp提供了三個方法用於報告比較的結果:

report():只比較指定資料夾中的內容(檔案與資料夾)report_partial_closure():比較資料夾及第一級子資料夾的內容report_full_closure():遞迴比較所有的資料夾的內容

例子:在資料夾"qin"中含有檔案"a.txt", 在資料夾"fu"中含有檔案"a.txt"和"b.txt",其兩個資料夾下面的檔案"a.txt"內容一樣,

import filecmp

x = filecmp.dircmp("qin","fu")

diff = x.report()

print(diff)

輸出結果如下:

diff qin fu 

only in fu: ["b.txt"]

identical files: ["qin.txt"]

如果兩個資料夾下面的檔案"a.txt"內容不相同那麼結果如下:

輸出結果如下:

diff qin fu

only in fu: ["b.txt"]

differing files: ["a.txt"]

dircmp還提供了下面這些屬性用於獲取比較的詳細結果

通過例項解析Python呼叫json模組

介紹 今天介紹一種資料格式,json。json是j ascript object notation的縮寫,區別於txt csv,json編碼格式更加靈活,在工作也會經常遇到。在python中要讀寫json是十分方便的,只需要呼叫json模組。使用直接匯入模組 import json 兩個讀寫資料的函...

Python 反射,通過字串來匯入模組

反射 通過字串額形式,匯入模組 通過字串的形式,去模組中尋找指定函式,並執行函式。import 字串形式的模組名稱 就可以匯入相應的模組 通過內建函式 getattr 模組名,函式的字串名稱 來指定需要執行的函式 注意找到了函式,還需要在函式名後面加 來執行函式。getattr,setattr,ha...

python模組 python模組介紹

一 簡介 模組是乙個包含所有你定義的函式和變數的檔案,其字尾名是.py。模組可以被其他程式匯入來使用模組具有的功能。這也是使用python標準庫的方式。首先使用import匯入time包,這樣意味著我們能夠使用time包裡的所有公共內容。最後利用time包的相關計時功能計算出該程式執行時長。呼叫模組...