python 标准库 filecmp
每日一词:
病毒
germs、bacteria 還是 viruses
Germ: 微生物
Bacterium: 這是「細菌」的意思,它是微小且單細胞的有機體。注意喔這個字的單數是 bacterium,複數要寫作 bacteria
Virus:病菌
茲卡病毒(Zika virus)、諾羅病毒(Norovirus)、愛滋病毒(Human Immunodeficiency Virus,縮寫即是 HIV)、輪狀病毒(Rotavirus)等。

继续学习关于文件操作的模块 filecmp
源代码
源代码: Lib/filecmp.py
filecmp 模块定义了用于比较文件及目录的函数,并且可以选取多种关于时间和准确性的折衷方案。对于文件的比较,另见 difflib 模块。
函数
filecmp 模块定义了如下函数:
filecmp.`cmp`(f1, f2, shallow=True)filecmp.`cmpfiles`(dir1, dir2, common, shallow=True)filecmp.`clear_cache`()
dircmp 类
class filecmp.`dircmp`(a, b, ignore=None, hide=None)
创建一个用于比较目录 a 和 b 的新的目录比较对象。 ignore 是需要忽略的文件名列表,且默认为 filecmp.DEFAULT_IGNORES 。 hide 是需要隐藏的文件名列表,且默认为 [os.curdir, os.pardir] 。
dircmp 类如 filecmp.cmp() 中所描述的那样对文件进行 shallow 比较。
dircmp 类提供以下方法:
report()将 a 与 b 之间的比较打印(到
sys.stdout)。report_partial_closure()打印 a 与 b 及共同直接子目录的比较结果。
report_full_closure()打印 a 与 b 及共同子目录比较结果(递归地)。
dircmp 类提供了一些有趣的属性,用以得到关于参与比较的目录树的各种信息。
需要注意,通过 __getattr__() 钩子,所有的属性将会惰性求值,因此如果只使用那些计算简便的属性,将不会有速度损失。
left目录 a 。
right目录 b 。
left_list经 hide 和 ignore 过滤,目录 a 中的文件与子目录。
right_list经 hide 和 ignore 过滤,目录 b 中的文件与子目录。
common同时存在于目录 a 和 b 中的文件和子目录。
left_only仅在目录 a 中的文件和子目录。
right_only仅在目录 b 中的文件和子目录。
common_dirs同时存在于目录 a 和 b 中的子目录。
common_files同时存在于目录 a 和 b 中的文件。
common_funny在目录 a 和 b 中类型不同的名字,或者那些
os.stat()报告错误的名字。same_files在目录 a 和 b 中使用类的文件比较操作符相等的文件。
diff_files在目录 a 和 b 中,根据类的文件比较操作符判定内容不等的文件。
funny_files在目录 a 和 b 中无法比较的文件。
subdirs一个将
common_dirs中名称映射为dircmp对象的字典。
filecmp.`DEFAULT_IGNORES`
下面是一个简单的例子,使用 subdirs 属性递归搜索两个目录以显示公共差异文件:
1 | from filecmp import dircmp |
例子
1 | #!/usr/bin/python3 |