• 8.5 filecmp--文件和文件夹比較处理


    本模块主要提供了对文件和文件夹进行简单的比較处理,假设须要复杂的文件比較须要使用difflib库来处理。

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

    比較文件f1和文件f2,当两个文件同样时返回True,否则返回False。假设參数shallowTrue,仅仅推断os.stat()函数返回内容是否同样,假设同样就返回True。否则再比較文件内容是否同样,假设同样也返回True。使用shallow參数能够高速地比較文件是否有改动过。

    样例:

    #python 3.4

    import filecmp

     

    r = filecmp.cmp('F:\temp\py\bisect2.py', 'F:\temp\py\bisect2.py')

    print(r)

    r = filecmp.cmp('F:\temp\py\bisect2.py', 'F:\temp\py\cal_1.py')

    print(r)

    结果输出例如以下:

    True

    False

     

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

    比較两个文件夹里同样文件列表的文件。參数dir1是文件夹1,參数dir2是文件夹2。參数common是比較的文件列表。參数shallow是跟上面的函数是一样意义。

    本函数执行之后返回三个文件名称列表:同样列表、不同样列表、错误列表。假设文件同样放在同样列表,不同样放不同样列表。假设文件不存在某一个文件夹。就放错误列表。

    样例:

    #python 3.4

    import filecmp

     

    dir1 = 'F:\temp\py\dir1'

    dir2 = 'F:\temp\py\dir2'

    r = filecmp.cmpfiles(dir1, dir2,

                         ['difflib1.py', 'difflib5.py', 'test1.txt'])

    print(r)

    结果输出例如以下:

    (['difflib1.py'], ['difflib5.py'], ['test1.txt'])

     

    filecmp.clear_cache()

    清除文件比較缓冲区。当比較的文件不断地高速改动时,就能够使用这个函数来更新文件的信息。

     

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

    构造一个新的文件夹比較对象,比較文件夹ab。參数ignore是忽略列表,是指那些文件不须要进行比較的;參数hide是隐藏的文件列表,默认是[os.curdir, os.pardir]

    这个类主要提供以下的方法:

    report()

    打印ab之间的比較结果到系统sys.stdout输出。

     

    report_partial_closure()

    打印文件夹ab。以及公共的子文件夹的比較结果到系统sys.stdout输出。

     

    report_full_closure()

    递归全部目标,包含子文件夹,把结果比較输出。

     

    left

    内部表示文件夹a

     

    right

    内部表示文件夹b

     

    left_list

    内部表示文件夹a经过隐藏和忽略过滤的文件和子文件夹列表。

     

    right_list

    内部表示文件夹b经过隐藏和忽略过滤的文件和子文件夹列表。

     

    common

    文件夹ab都有的公共文件和子文件夹。

     

    left_only

    仅在文件夹a出现的文件和子文件夹。

     

    right_only

    仅在文件夹b出现的文件和子文件夹。

     

    common_dirs

    在文件夹a和文件夹b都出现的子文件夹。

     

    common_files

    在文件夹a和文件夹b都出现的文件。

     

    common_funny

    比較文件夹ab不同的文件夹或文件。通过os.stat()比較。

     

    same_files

    比較文件夹ab同样的文件夹或文件。

     

    diff_files

    比較文件夹ab不同的文件夹或文件。通过文件内容比較。

     

    funny_files

    不进行比較的文件。

     

    subdirs

    子文件夹字典。

     

    filecmp.DEFAULT_IGNORES

    须要忽略的文件列表。

     

    样例:

    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)

    在这个样例里,主要比較文件夹dir1dir2,为此创建了dircmp对象dcmp,然后调用函数print_diff_files()。在这个函数里主要打印输出不同的文件,并递归到子文件夹里打印子文件夹里不同的文件输出。



    蔡军生 QQ:9073204  深圳

  • 相关阅读:
    BZOJ 1003--[ZJOI2006]物流运输(最短路)
    BZOJ 1002--[FJOI2007]轮状病毒(高精度)
    BZOJ 1001--[BeiJing2006]狼抓兔子(最短路&对偶图)
    BZOJ 1719--[Usaco2006 Jan] Roping the Field 麦田巨画(几何&区间dp)
    BZOJ 2821--作诗(分块)
    BZOJ 2724--蒲公英(分块)
    BZOJ 2388--旅行规划(分块&单调栈&二分)
    用python操作Git
    JS常用到的日期函数
    Python3.7使用celery出现from . import async, base SyntaxError: invalid syntax错误
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/7350990.html
Copyright © 2020-2023  润新知