filecmp模块:Python中的文件比较工具
filecmp是Python中的文件比较工具模块,它提供了一组函数,可以用来比较目录、文件和文件夹。
filecmp模块主要有以下几个函数:
1. filecmp.cmp(file1, file2, shallow=True):比较两个文件的内容。如果shallow为True(默认值),则只比较文件的大小和修改时间;如果shallow为False,则还会比较文件的内容。
例如:
import filecmp
file1 = 'file1.txt'
file2 = 'file2.txt'
if filecmp.cmp(file1, file2):
print("文件内容相同")
else:
print("文件内容不同")
2. filecmp.cmpfiles(dir1, dir2, common, shallow=True):比较两个目录中指定的共同文件。common是一个由文件名组成的列表,表示要比较的文件。该函数返回一个元组的列表,每个元组包含三个项:两个文件的路径和一个布尔值,表示文件是否相同。
例如:
import filecmp
dir1 = 'dir1'
dir2 = 'dir2'
common_files = ['file1.txt', 'file2.txt']
compared_files = filecmp.cmpfiles(dir1, dir2, common_files)
for file1, file2, is_same in compared_files:
if is_same:
print(f"{file1} 和 {file2} 的内容相同")
else:
print(f"{file1} 和 {file2} 的内容不同")
3. filecmp.dircmp(dir1, dir2, ignore=[], hide=[]):比较两个目录的内容。ignore是一个包含要忽略的文件和文件夹的列表,hide是一个包含要隐藏的文件和文件夹的列表。该函数返回一个dircmp对象,可以使用它的方法和属性来获取关于目录比较的详细信息。
例如:
import filecmp
dir1 = 'dir1'
dir2 = 'dir2'
dcmp = filecmp.dircmp(dir1, dir2)
for name in dcmp.diff_files:
print(f"{name} 在 {dir1} 中存在,在 {dir2} 中不存在")
for name in dcmp.common_files:
print(f"{name} 在 {dir1} 和 {dir2} 中都存在")
for name in dcmp.left_only:
print(f"{name} 只在 {dir1} 中存在")
for name in dcmp.right_only:
print(f"{name} 只在 {dir2} 中存在")
filecmp模块还提供了其他一些函数和类,如:
- filecmp.clear_cache():清除文件比较函数的缓存。
- filecmp.cmpstat(file1, file2):比较两个文件的stat信息。
- filecmp.DEFAULT_IGNORES:一个包含了默认忽略项的列表。
- filecmp.DEFAULT_IGNORES_NAMES:一个包含了默认忽略项的名称的列表。
- filecmp.DEFAULT_SHALLOW:一个布尔值,表示shallow参数的默认值。
需要注意的是,filecmp模块默认使用的是shallow比较,即只比较文件的大小和修改时间。如果需要进行内容比较,需要将shallow参数设置为False。
综上所述,filecmp模块是Python中用于比较文件、目录和文件夹的工具,功能强大且易于使用。可以根据实际需求选择合适的函数和类来进行文件比较操作。
