Python中的檔案和目錄比較
Python 的標準庫包含 filecmp 模組,該模組定義了用於比較檔案和目錄的函式。此比較除了考慮檔案中的資料外,還考慮檔案的屬性。
本文中的示例程式碼使用以下檔案和目錄結構。
首先在當前工作目錄下建立兩個目錄 dir1 和 dir2。它們包含以下檔案。
--dir1/newfile.txt-- This is a file in dir1 --dir1/file1.txt-- Hello Python --dir1/file2.txt-- Python Standard Library --dir2/file1.txt-- Hello Python --dir2/file2.txt-- Python Library
現在讓我們描述 filecmp 模組中的各種比較函式。
filecmp.cmp(f1, f2, shallow=True)
此函式比較兩個檔案,如果它們相同則返回 True,否則返回 False。shallow 引數預設為 True。因此,除了內容外,還考慮檔案元資料進行比較。如果將 shallow 設定為 False,則僅比較內容。
根據我們的檔案結構,以下程式碼產生如下所示的輸出:
Differing files : ['file2.txt']
>>> filecmp.cmp('dir1/file1.txt', 'dir2/file1.txt')
True
>>> filecmp.cmp('dir1/file1.txt', 'dir2/file1.txt', shallow = False)
True
>>> filecmp.cmp('dir1/file2.txt', 'dir2/file2.txt')
Falsefilecmp.cmpfiles(dir1, dir2, shallow)
此函式比較兩個目錄中的檔案,並返回一個包含三個專案的元組。元組中的第一個專案是匹配檔案的列表,第二個專案顯示不匹配檔案的列表,第三個專案是不匹配檔案的列表。
>>> match, mismatch,errors = filecmp.cmpfiles('dir1','dir2',['file1.txt', 'file2.txt'])
>>> match
['file1.txt']
>>> mismatch
['file2.txt']
>>> errors
[]filecmp 模組還定義了 dircmp 類。它的物件是目錄比較物件。它比較兩個目錄(標識為左目錄和右目錄)中的檔案。該物件可以執行如下所述的各種方法:
filecmp.dircmp(a,b)
這是建構函式。a 和 b 是要比較的目錄。預設情況下,目錄中的系統檔案在比較中被隱藏並忽略。
>>> result = filecmp.dircmp('dir1', 'dir2')dircmp 類中的其他方法如下:
report()
此方法列印目錄之間比較的結果。
>>> result = filecmp.dircmp('dir1', 'dir2')
>>> result.report()
diff dir1 dir2
Only in dir1 : ['newfile.txt']
Identical files : ['file1.txt']
Differing files : ['file2.txt']left, right
這些屬性列印 dircmp 建構函式中第一個和第二個目錄的名稱。
>>> result.left 'dir1' >>> result.right 'dir2'
left_list, right_list
這些屬性返回兩個目錄中的檔案列表。
>>> result.left_list ['file1.txt', 'file2.txt', 'newfile.txt'] >>> result.right_list ['file1.txt', 'file2.txt']
common, common_files, common_dirs
這些屬性返回公共檔案和目錄、僅公共檔案和僅公共目錄。
>>> result.common ['file1.txt', 'file2.txt'] >>> result.common_files ['file1.txt', 'file2.txt'] >>> result.common_dirs []
same_file, diff_files
這些屬性使用在 dircmp 類中定義的比較運算子返回相同檔案和不同檔案的列表。
>>> result.same_files ['file1.txt'] >>> result.diff_files ['file2.txt']
本文討論了 dircmp 類、其方法以及在 filecmp 模組中定義的檔案比較函式。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP