重温战场 发表于 2018-8-7 12:21:20

python使用difflib对比文件示例

#!/usr/bin/env python  
# -*- coding: utf-8 -*-
  
import os
  
import sys
  
import difflib
  

  
try:
  tfile1=sys.argv
  tfile2=sys.argv
  
except Exception,e:
  print "错误:"+str(e)
  print "请准确输入参数,例如:python diff.py file1 file2"
  sys.exit()
  
def readfile(filename):
  try:
  fileHandle=open(filename,'rb')
  lines=fileHandle.read().splitlines()
  fileHandle.close()
  return lines
  except IOError as error:
  print('读取文件错误:'+str(error))
  sys.exit()
  
if tfile1=="" or tfile2=="":
  print "请准确输入参数,例如:python diff.py file1 file2"
  sys.exit()
  
tfile1_lines=readfile(tfile1)
  
tfile2_lines=readfile(tfile2)
  

  
#d=difflib.HtmlDiff()
  
#print s.make_file(tfile1_lines,tfile2_lines)
  

  
#为了生成html能识别中文,可用下面代码 #修改diff.html的编码,将ISO-8859-1改为UTF-8
  
#====================================
  
#方法1:
  
#d=difflib.HtmlDiff()
  
#q=d.make_file(tfile1_lines,tfile2_lines)
  
#old_str='charset=ISO-8859-1'
  
#new_str='charset=UTF-8'
  
#data=q.replace(old_str,new_str)
  
#fo=open('diff.html','w')
  
#fo.write(data)
  
#fo.close()
  
#====================================
  
#方法2:
  
#d=difflib.HtmlDiff()
  
#q=d.make_file(tfile1_lines,tfile2_lines)
  
#old_str='charset=ISO-8859-1'
  
#new_str='charset=UTF-8'
  
#fo=open('diff.html','w')
  
#fo.write(q)
  
#fo.close()
  
#with open('diff.html','r') as f:
  
#      lines=f.readlines()
  
#with open('diff.html','w') as f_new:
  
#      for line in lines:
  
#                f_new.write(line.replace(old_str,new_str))
  
#=====================================
  
#方法3:
  
old_str='charset=ISO-8859-1'
  
new_str='charset=UTF-8'
  
d=difflib.HtmlDiff()
  
q=d.make_file(tfile1_lines,tfile2_lines)
  
with open('diff.html','w') as f_new:
  f_new.write(q.replace(old_str,new_str))
页: [1]
查看完整版本: python使用difflib对比文件示例