zoukankan      html  css  js  c++  java
  • filecmp 比较文件&目录

    filecmp------比较文件

    作用:比较文件系统中的文件和目录

    filecmp模块包含一些函数喝一个类来比较文件系统中的文件和目录。

      1.1 cmp()用于比较文件系统中的两个文件

    1 import filecmp
    2 
    3 print filecmp.cmp("\...\...\testfile1","\...\...\testfile2",shallow=False)

    备注:①"\...\...\testfile1","\...\...\testfile2"为比较的两个文件,“shallow=False”参数告诉cmp()除了文件的源数据外,是否还要查看文件的内容。默认情况下,会使用有os.stat()得到的信息完成一个浅比较,而不查看内容。对于同时创建的相同大小的文件如果不比较内容会报告相同

      1.2 cmpfiles()多文件比较

      如果非递归地比较两个目录中的一组文件,可以使用cmpfiles()。参数是目录名和两个位置上要检查的文件列表。传入的公共文件列表应当只包含文件名,而且这些文件在两个位置上都应当出现。

     1 import filecmp
     2 import os
     3 
     4 d1 = sets(os.listdir("dir1"))
     5 d2 = sets(os.listdir("dir2"))
     6 
     7 common = list(d1 & d2)
     8 common_files = [f
     9                 for f in common
    10                 if os.path.isfile(os.path.join("dir1",f))
    11                ]    
    12 print "common files:",common_files
    13 
    14 match,mismatch,errors = filecmp.cmpfiles("dir1","dir2",common_files)
    15 
    16 print "Match : " , match
    17 print "Mismatch : " , mismatch
    18 print "Error : " , errors

    cmpfiles() 返回3个文件名列表,分别包含匹配的文件、不匹配的文件和不能比较的文件(权限问题或出于其他原因)

    2.1 比较目录

      对于大目录树的递归比较或者完成更完整的分析,dircmp类会更有用。

    1 import filecmp
    2 filecmp.dircmp("dir1","dir2").report()

      report()会打印比较两个目录的报告

      需要递归子目录对比可以使用report_full_closure()

    2.2 程序中的使用

      

     1 import filecmp
     2 import pprint
     3  
     4 dc = filecmp.dircmp("dir1","dir2")
     5 print "Left : "
     6 pprint.pprint(dc.left_list)
     7  
     8 print "\nRight : "
     9 pprint.pprint(dc.right_list)
    10  
    11 """可以传入参数,对输入进行过滤。"""
    12 dc = filecmp.dircmp("dir1","dir2",ignore=["common_file"])
    13 print "Left : "
    14 pprint.pprint(dc.left_list)
    15  
    16 print "\nRight : "
    17 pprint.pprint(dc.right_list)

      dc.common:两个输入目录中共有的文件名保存在common

      dc.left_only:左目录独有文件(dircmp()的第一个参数 left)

      dc.right_only:右目录独有文件(dircmp()的第二个参数 right)

      公共成员可以进一步分解为文件、目录和funny(两个目录中类型不同的内容或者os.stat()指出错误的地方)。dc.common_dirs、dc.common_files、dc.common_funny。文件之间的差别:dc.same_files、dc.deff_files、dc.funny_files。子目录也会保存(dc.subdirs) 属性subdirs是一个字典,它将目录名映射到新的dircmp对象,从而能容易地完成递归比较。

    参照:《python标准库》

  • 相关阅读:
    逆向学习-内嵌补丁(洞穴代码)
    ubuntu下创建ftp用户,该用户只访问特定目录下的内容
    Ubuntu 14.04 FTP服务器--vsftpd的安装和配置
    Hdu 4223 Dynamic Programming?
    Hdu 3873 Invade the Mars
    Hdu 2025 查找最大元素
    Hdu 1520 Anniversary party
    Hdu 4283 You Are the One
    HTTP协议
    常用正则表达式
  • 原文地址:https://www.cnblogs.com/kratos0517/p/3087428.html
Copyright © 2011-2022 走看看