python如何对比两个目录的文件是否相同

  介绍

这篇文章将为大家详细讲解有关python如何对比两个目录的文件是否相同,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

有时候我们要对比两份配置文件是不是一样,或者比较两个文本是否异样,可以使用linux命令行工具diff a_file b_file,但是输出的结果读起来不是很友好。这时候使用python的标准库difflib就能满足我们的需求。

下面这个脚本使用了difflib和argparse, argparse用于解析我们给此脚本传入的两个参数(即两份待比较的文件),由difflib执行比较,比较的结果放到了一个html里面,只要找个浏览器打开此html文件,就能直观地看到比较结果,两份文件有差异的地方会高亮显示出来。

以python2.7为例,compare_two_files。py程序正文:

# !/bin/env  python   #,- *安康;编码:utf-8  - * -   import  difflib   import 系统   import  argparse   #,读取建表语句或配置文件   def  read_file (file_name):   ,,,试一试:   ,,,,,,,file_desc =,开放(file_name, & # 39; " # 39;)   ,,,,,,,#,读取后按行分割   ,,,,,,,text =, file_desc.read () .splitlines ()   ,,,,,,,file_desc.close ()   ,,,,,,,return 文本   ,,,except  IOError  as 错误:   ,,,,,,,print  & # 39; Read  input  file 错误:,{0}& # 39;.format(错误)   ,,,,,,,sys.exit ()   #,比较两个文件并把结果生成一份html文本   def  compare_file (,, file1 file2):   ,,,if  file1 ==,““,或是file2 ==,““:   ,,,,,,,print  & # 39;文件路径不能为空:第一个文件的路径:{0},,第二个文件的路径:{1},强生的# 39;.format (,, file1 file2)   ,,,,,,,sys.exit ()   ,,,:   ,,,,,,,print “正在比较文件{0},和,{1}“.format (,, file1 file2)   ,,,text1_lines =, read_file (file1)   ,,,text2_lines =, read_file (file2)   ,,,diff =, difflib.HtmlDiff(),,,, #,创建HtmlDiff 对象   ,,,result =, diff.make_file (text1_lines, text2_lines),, #,通过make_file 方法输出,html 格式的对比结果   ,,,#,将结果写入到result_comparation.html文件中   ,,,试一试:   ,,,,,,,with 开放(& # 39;result_comparation.html& # 39;,, & # 39; w # 39;), as  result_file:   ,,,,,,,,,,,result_file.write(结果)   ,,,,,,,,,,,print “0==}==========祝辞,Successfully 完成\ n"   ,,,except  IOError  as 错误:   ,,,,,,,print  & # 39;写入html文件错误:{0}& # 39;.format(错误)   if  __name__ ==,“__main__":   ,,,#,用define  two  arguments  should  be  passed ,,以及用法:-f1  fname1  -f2  fname2   ,,,my_parser =, argparse.ArgumentParser(描述=按肓礁鑫募问?   ,,,my_parser.add_argument (& # 39; -f1& # 39;,, action=& # 39;商店# 39;,,dest=& # 39; fname1& # 39;,,需要=True)   ,,,my_parser.add_argument (& # 39; - f2 # 39;,, action=& # 39;商店# 39;,,dest=& # 39; fname2& # 39;,,需要=True)   ,,,#,retrieve  all  input 参数   ,,,given_args =, my_parser.parse_args ()   ,,,file1 =given_args.fname1   ,,,file2 =given_args.fname2   ,,,compare_file (,, file1 file2)

<强>【待比较的文件】

两份文件分别是old_ddl_file和new_ddl_file,内容分别是:

old_ddl_file文件内容

CREATE  EXTERNAL  TABLE  raw_tags (   p0  string  COMMENT “uid”,   p3  string  COMMENT ,“tag 名字,,如只新闻,游戏,,博览会,,shoopingURL”,   p4  string  COMMENT “如只0,,游戏”,   p11  int  COMMENT “性别”,   dt  string  COMMENT ,“日期,like  26/6/2017”,   action  string  COMMENT “clickmodule, click_taghead_link,, clicklink”)   CLUSTERED  BY  (   dt)   INTO  4桶   ROW  FORMAT 分隔   FIELDS  TERMINATED  BY ”、“   STORED  AS  INPUTFORMAT   “org.apache.hadoop.mapred.TextInputFormat”   OUTPUTFORMAT   “org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat”   位置   hdfs://hdfs-ha/应用程序/蜂巢/仓库/ksai.db/raw_tags '   TBLPROPERTIES  (   “numFiles '=' 1 ',   “numRows '=' 0 ',   “rawDataSize '=' 0 ',   ' totalSize '=' 70575510 ',   ' transient_lastDdlTime '=' 1500469448 ')

new_ddl_file文件内容

CREATE  EXTERNAL  TABLE  raw_tags (   p0  string  COMMENT “uid”,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

python如何对比两个目录的文件是否相同