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 |