如何将两个 python 脚本与 difflib 库进行比较?

时间:2021-01-07 06:29:01

标签: python-3.x attributeerror difflib

我想将两个 python 脚本与 difflib 库进行比较。

其中一个脚本有效,另一个无效。

我使用以下代码来比较两个文件:

import difflib 

first_file = 'E:\Elzero_learning\onefirst_file.txt'
second_file = 'E:\Elzero_learning\second_file.txt'
first_file_lines = open (first_file).readlines()
second_file_lines = open (second_file).readlines()
difference = difflib.HtmlDiff.make_file(first_file_lines ,second_file_lines ,first_file ,second_file )
difference_report = open("E:\Elzero_learning\output_file_1.html","w")
difference_report.write(difference)
difference_report.close()

但是我在执行代码时收到此错误回溯:

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Try the new cross-platform PowerShell https://aka.ms/pscore6

PS E:\Elzero_learning> & C:/python/Python39/python.exe "e:/Elzero_learning/compare files.py"
Traceback (most recent call last):
  File "e:\Elzero_learning\compare files.py", line 7, in <module>
    difference = difflib.HtmlDiff.make_file(first_file_lines ,second_file_lines ,first_file ,second_file )
  File "C:\python\Python39\lib\difflib.py", line 1764, in make_file
    return (self._file_template % dict(
AttributeError: 'list' object has no attribute '_file_template'
PS E:\Elzero_learning> 

1 个答案:

答案 0 :(得分:1)

您需要一个 difflib.HtmlDiff 实例来调用 make_file(),因此更改:

difference = difflib.HtmlDiff.make_file(...)

difference = difflib.HtmlDiff().make_file(...)

在调用其 difflib.HtmlDiff 方法之前创建一个 make_file() 实例。

您可能想查看类 difflib.HtmlDiff 的文档,看看是否有您想要设置的任何默认参数。