python是目前最受欢迎的脚本语言之一,在很多简单功能实现中,python就有不可替代的优势,下面是针对本人遇到的一个小问题而写的一个python脚本,代码中含有注释,这里由于浏览器本身的格式原因,所以全部被左对齐了,自己使用的时候需要调整代码格式。其功能是按照自己的要求打开目录中的两个文件,对其进行对比,然后将对比后的结果保存在html文件中,其中不同的地方做特殊标志,其他地方保持不变!

import sys

import difflib

import win32ui

# 读取配置文件函数

def read_file(file_name):

try:

file_handle = open(file_name, 'r')

text = file_handle.read().splitlines() # 读取后以行进行分割

file_handle.close()

return text

except IOError as error:

print('Read file Error: {0}'.format(error))

sys.exit()

#打开并获取文件路径

def getcompFileName1(file1_name):

dlg = win32ui.CreateFileDialog(1) # 1表示打开文件对话框

dlg.SetOFNInitialDir('E:/') # 设置打开文件对话框中的初始显示目录

dlg.DoModal()

filename = dlg.GetPathName() # 获取选择的文件名称

file1_name = filename

print(file1_name)

return file1_name

def getcompFileName2(file2_name):

file2_name = filename

print(file2_name)

return file2_name

# 比较两个文件并输出html格式的结果

def compare_file(file1_name, file2_name):

if file1_name == "" or file2_name == "":

print('文件路径不能为空:file1_name的路径为:{0},file2_name的路径为:{1} .'.format(file1_name, file2_name))

text1_lines = read_file(file1_name)

text2_lines = read_file(file2_name)

diff = difflib.HtmlDiff() # 创建htmldiff 对象

result = diff.make_file(text1_lines, text2_lines) # 通过make_file 方法输出 html 格式的对比结果

# 将结果保存到比较结果.html文件中并打开

with open('比较结果.html', 'w') as result_file: #同 f = open('比对结果.html', 'w') 打开或创建一个比对结果.html文件

result_file.write(result) #同 f.write(result)

print ('写入html文件错误:{0}'.format(error))

if __name__ == "__main__":

file1_name = " "

file1 = getcompFileName1(file1_name)

print(file1)

file2_name = " "

file2 = getcompFileName2(file2_name)

print(file2)

compare_file(file1, file2) #传入两文件的路径

运行时过程简要如下:

比较后的输出结果示例如下:

运行结果示例,橙色部分为两个文件区别

以上内容便是本次共享的代码,希望对大家有所帮助!喜欢的话就请关注我鼓励一下并点个赞吧,祝各位生活愉快!

#四月图文MCN打榜赛#

#教育持久战#

python打开文件对话框_python实战演练:如何通过对话框打开文件并对文件进行对比...相关推荐

  1. python文件函数_Python closed()函数:关闭打开的文件

    在文件使用完毕后,需要关闭文件以释放资源.关闭文件的方法是: 文件对象.close() 可以对一个已经关闭的文件再次执行 close() 操作,不必担心会产生异常. 在文件关闭后便不能对其进行读写操作 ...

  2. python获取键盘输入_Python 3 学习笔记之——键盘输入和读写文件

    1. 键盘输入 Python提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘.input 可以接收一个 Python 表达式作为输入,并将运算结果返回. str = inp ...

  3. python文件审计_Python代码审计实战案例总结之CRLF和任意文件读取

    文章目录 介绍 CRLF和任意文件读取的审计实战 CRLF 审计实战 urllib CRLF漏洞(CVE-2019-9740和CVE-2019-9947) httplib CRLF 漏洞 任意文件读取 ...

  4. python批量下载网页文件夹_Python实现批量从不同的Linux服务器下载文件

    基于Python实现批量从不同的Linux服务器下载文件 by:授客 实现功能 批量从不同的Linux服务器下载指定文件 测试环境 Win7 64位 Python 3.3.2 pscp 64位 下载地 ...

  5. python定位文件位置_python使用相对定位,绝对定位,选取同级别文件下的指定文件(csv,excel)...

    最近使用python读取同级下的data数据文件,开始找了很多方法.下面我总结成二种方法: 1.xxx.py想要打开.data.csv,使用相对路径,有如下方法: 思路: xxx.py想要打开的是mp ...

  6. python excel处理模块_Python(00):openpyxl模块处理Excel文件

     首先贴出四种方法适用范围比较: 注释:Excel 2003 即XLS文件有大小限制即65536行256列,所以不支持大文件.而Excel 2007以上即XLSX文件的限制则为1048576行163 ...

  7. python读取docx文件出错_Python:读取 .doc、.docx 两种 Word 文件简述及“Word 未能引发事件”错误...

    Python 中可以读取 word 文件的库有 python-docx 和 pywin32. 优点 缺点 python-docx 跨平台 只能处理 .docx 格式,不能处理.doc格式 pywin3 ...

  8. python的excell库_Python中使用第三方库xlrd来写入Excel文件示例

    继上一篇文章使用xlrd来读Excel之后,这一篇文章就来介绍下,如何来写Excel,写Excel我们需要使用第三方库xlwt,和xlrd一样,xlrd表示read xls,xlwt表示write x ...

  9. python接管已经打开的浏览器_Python Webdriver 从新使用已经打开的浏览器实例

    由于Webdriver每次实例化都会新开一个全新的浏览器会话,在有些状况下须要复用以前打开未关闭的会话.好比爬虫,但愿结束脚本时,让浏览器处于空闲状态.当脚本从新运行时,它将继续使用这个会话工做.还就 ...

最新文章

  1. golang连接postgresql too many client_MySQL和PostgreSQL压测性能对比
  2. Keras【Deep Learning With Python】实现线性回归模型
  3. golang中的goredis
  4. 使用Java生成二维码图片(亲测)
  5. scrapy的Middleware
  6. canvas的getImageData和putImageDataAPI
  7. Java volatile关键字详解
  8. 计算机视觉(CV)中图像的梯度
  9. 2021认证杯第二阶段数学建模思路论文交流群:984771555
  10. 修复Joe主题静态资源为国内地址
  11. UE4中文汉字字体制作
  12. matlab 取虚数单位,四元数解算姿态Matlab程序代码
  13. 2022-2027年中国精华素行业市场深度分析及投资战略规划报告
  14. 专访微软梁念坚:任职两年给自己打70分
  15. vector注意事项,vector subscript out of range
  16. 共轭相似以及共轭对角化
  17. 专升本英语——应试题型突破——翻译——名言警句【学习笔记】
  18. 计算机通信中应用的调制解调与无线电通信,计算机通讯中的一对搭档——调制解调器和通讯软件...
  19. OVAL学习之第二篇
  20. js 中文转拼音缩写

热门文章

  1. 使用docker部署vue_如何使用Vue,Docker和Azure进行持续交付
  2. gitter 卸载_最佳Gitter渠道:PHP
  3. 126_Power BI中使用DAX计算股票RSI及股票均线相关
  4. SonarQube搭建和使用教程
  5. add()方法和Put()方法的差别
  6. Java多线程:线程休眠
  7. 100行Python代码实现一款高精度免费OCR工具
  8. python作用域——LEGB规则
  9. 理解矩阵背后的现实意义
  10. word中如何将所有字母一次修改成新罗马字体