Python标准库学习之filecmp

filecmp.cmp(f1, f2, shallow=True) 

比较文件f1与f2,相同时返回True,不同返回False
当shallow为True时仅比较俩文件的os.stat签名,否则比较文件内容

filecmp.cmpfiles(dir1, dir2, common, shallow=True) 

比较文件夹dir1与dir2下的common文件,shallow用法与filecmp.cmp相同

class filecmp.dircmp(a, b, ignore=None, hide=None)

report() 

打印目录a,b下内容比较结果

report_partial_closure() 

打印目录a,b及其相同子目录下内容比较结果

report_full_closure() 

打印目录a,b及其共同子目录递归比较结果

left 

目录a的名称

right

目录b的名称

left_list 

目录a下内容

right_list

目录b下内容

common

目录a,b的共同内容

left_only

a中独有的内容

right_only

b中独有的内容

common_dirs

a,b相同子文件夹

common_files

a,b共同文件(文件名相同即可)

same_files

a,b共同文件(内容也要相同)

diff_files

a,b不同文件(文件名相同,内容不同)

subdirs

为common_dirs中共同文件夹创建一个dircmp类型的字典对象。

实际应用
此程序实现的功能为:比较两文件夹下的内容,找出相同文件和文件夹,不同文件(文件名相同,内容不同)以及每个文件夹独有内容,还可以通过-r参数对文件夹下相同文件夹中内容进行递归比较。

# -*- coding: utf-8 -*-
import argparse
import os.path
from filecmp import dircmp

#获取命令行参数
def getArgs():
    parser = argparse.ArgumentParser(prog = 'dircmp', description = 'compare files and dirs between two directories')
    parser.add_argument('d1', help = 'directory1')
    parser.add_argument('d2', help = 'directory2')
    parser.add_argument('--recurr', '-r', help = 'compare both current dir and subdir', action = 'store_true')
    args = parser.parse_args()
    return args

#打印文件夹比较结果
def print_compare_result(dcmp, r):
    if r:
        print(dcmp.report_full_closure())
    else:
        print(dcmp.report())


if __name__ == "__main__":
    args = getArgs()
    print_compare_result(dircmp(args.d1, args.d2), args.recurr)

程序需要两个必须的参数d1和d2,这两个参数提供要进行比较的文件夹;一个可选参数-r,指明是否递归比较文件夹下的相同子文件夹中内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值