filecmp是python内置的一个模块,用于比较文件及文件夹的内容。 filecmp由两个主要的方法,filecmp.cmp(f1, f2, [shallow])和filecmp.cmpfiles(a, b, common, [shallow])。
- filecmp.cmp(f1, f2, [shallow]),用于比较两个文件。f1、f2是文件名称,shallow为可选参数,指定比较文件时是否需要考虑文件本身的属性,默认是True。
import filecmp
"""
说明:text.txt和text1.txt内容不相同,text.txt和text2.txt内容相同。
"""
res1 = filecmp.cmp("text.txt", "text1.txt", shallow=True)
print("text.txt与text1.txt的比较结果是:{}".format(res1))
res2 = filecmp.cmp("text.txt", "text2.txt", shallow=True)
print("text.txt与text2.txt的比较结果是:{}".format(res2))
如果文件内容匹配,则返回True,如果文件内容不匹配,则返回False:
- filecmp.cmpfiles(a, b, common, [shallow]),用于比较两个目录。a, b为目录路径,common为比较文件列表,shallow为可选参数,如果其值为True,则仅比较文件的元数据,即文件的os.stat()签名(如大小,修改日期等),如果它们具有相同的签名,则无论文件内容如何,??文件都被视为相等。如果为False,则比较文件的内容。此参数的默认值为True。
import filecmp
"""
说明:
dir1中有三个文件,"text.txt", "text1.txt", "text2.txt"
dir2中有两个文件,"text.txt", "text1.txt"
两个文件夹中的"text.txt"文件一样,"text1.txt"文件不一样
"""
dir1 = r'D:\PythonWorkFolder\wsw\test\folder'
dir2 = r'D:\PythonWorkFolder\wsw\test\folder1'
common_list = ["text.txt", "text1.txt", "text2.txt"]
match, mismatch, errors = filecmp.cmpfiles(dir1, dir2, common_list, shallow=True)
print("比较的结果中,匹配的是:\n{}\n不匹配的是:\n{}\n错误的是:\n{}\n".format(match, mismatch, errors))
此函数会返回三个列表,分别存放匹配文件名称、不匹配文件名称、错误文件名称:
|