filecmp
源代码: Lib/filecmp.py
这个 filecmp
模块定义用于比较文件和目录的函数,以及各种可选的时间/正确性权衡。有关比较文件的信息,请参见 difflib
模块。
这个 filecmp
模块定义以下功能:
- filecmp.cmp(f1, f2, shallow=True)
比较名为的文件 f1 和 f2 归来
True
如果它们看起来相等,False
否则。如果 浅的 为真,文件与
os.stat()
签名被认为是平等的。否则,将比较文件的内容。请注意,此函数没有调用任何外部程序,因此它具有可移植性和效率。
此函数将缓存用于过去的比较和结果,如果
os.stat()
文件更改信息。整个缓存可以使用clear_cache()
.
- filecmp.cmpfiles(dir1, dir2, common, shallow=True)
比较两个目录中的文件 dir1 和 dir2 其姓名由 常见的 .
返回三个文件名列表: 比赛 , 不匹配 , errors . 比赛 包含匹配的文件列表, 不匹配 包含不包含的名称,以及 errors 列出无法比较的文件名。文件列在 errors 如果它们不存在于某个目录中,那么用户就没有读取它们的权限,或者由于其他原因无法进行比较。
这个 浅的 参数的含义和默认值与
filecmp.cmp()
.例如,
cmpfiles('a', 'b', ['c', 'd/e'])
将比较a/c
具有b/c
和a/d/e
具有b/d/e
.'c'
和'd/e'
将在三个返回列表中的一个列表中。
这个 dircmp
类
- class filecmp.dircmp(a, b, ignore=None, hide=None)
构造新的目录比较对象,以比较目录 a 和 b . 忽视 是要忽略的名称列表,默认为
filecmp.DEFAULT_IGNORES
. hide 是要隐藏的名称列表,默认为[os.curdir, os.pardir]
.这个
dircmp
类通过执行比较文件 浅的 如前所述的比较filecmp.cmp()
.这个
dircmp
类提供以下方法:- report()
打印(到)
sys.stdout
)比较 a 和 b .
这个
dircmp
类提供了许多有趣的属性,这些属性可用于获取有关正在比较的目录树的各种信息位。注意通过
__getattr__()
钩子,所有属性都是延迟计算的,所以如果只使用那些轻量级的属性,就不会有速度损失。- common_funny
两个名字 a 和 b ,使类型在目录或目录名之间有所不同
os.stat()
报告错误。
- subdirs
在中映射名称的词典
common_dirs
至dircmp
实例(如果此实例的类型为MyDirCmp,则为MyDirCmp实例,MyDirCmp的子类dircmp
)。
- filecmp.DEFAULT_IGNORES
3.4 新版功能.
被忽略的目录列表
dircmp
默认情况下。
下面是使用 subdirs
属性在两个目录中递归搜索以显示常见的不同文件:
>>> from filecmp import dircmp
>>> def print_diff_files(dcmp):
... for name in dcmp.diff_files:
... print("diff_file %s found in %s and %s" % (name, dcmp.left,
... dcmp.right))
... for sub_dcmp in dcmp.subdirs.values():
... print_diff_files(sub_dcmp)
...
>>> dcmp = dircmp('dir1', 'dir2')
>>> print_diff_files(dcmp)