前情提示: 测试代码中,右尖括号(>
)表示命令行中输入的命令; 单独一行并以井字符(#
)开头的为输出内容; 库的导入仅在本文的第一个测试代码中展现,其他代码块均省略库的导入代码。
- 系统类型:
Windows 10
- python 版本:
Python 3.9.0
filecmp
模块可以用于文件与文件之间或目录与目录之间的比较。并且可以通过设置参数来选取多种不同用时和不同准确性的方案。
filecmp
模块在进行文件或目录对比时,最终仅能返回是否相等这一结果。某些场景需要更加详细的结果说明,可以使用 difflib
标准库。
快捷函数
filecmp.cmp(f1, f2, shallow=True)
参数:
f1, f2: 要进行比较的两个文件
shallow: 关键字参数, 参数值为布尔值, 默认为 True;
如果为 True, 则判断两文件需要具有相同的 os.stat() 签名才会认为是相等的;
如果为 False, 则比较两文件的内容;
返回值:
布尔值, 两个文件是否相等
比较 f1
和 f2
的文件,如果它们似乎相等则返回 True
,否则返回 False
。在官方文档中用上了 ‘似乎’ 一词,这让人感觉有什么隐秘的信息文档上没有表达出来。
import filecmp
import os
'''本次测试代码中存在 4 个待对比文件, 其中 文件1 与 文件2 内容不同, 文件3 与 文件4 内容相同'''
print(os.stat('文件1'))
print(os.stat('文件2'))
print(filecmp.cmp('文件1', '文件2', shallow=True))
print(filecmp.cmp('文件1', '文件2', shallow=False))
# os.stat_result(st_mode=33206, st_ino=1407374883609775, st_dev=3098197482, st_nlink=1, st_uid=0, st_gid=0, st