Difflib 计数差异

问题描述

我是 difflib 的新手,我用它来比较 2 个文件内容。 到目前为止它工作得很好,但我试图在脚本的末尾打印差异和新行的数量

例如,如果我的输出包含 2 个差异 ! ,我希望在输出的末尾有一个总结,打印出如下内容

There are 2 Differences
There is 1 new line

我尝试通过定位字符串并检查它们是否包含 '! ''+ ' 来实现此目的,但没有奏效。

谁能帮助我了解实现这一目标的最佳方法是什么?

这些是我正在使用的文件

文件 1:

USE [sql-database-one]
GO
/****** Object:  Table [dbo].[PeopleInfo]    Script Date: 23/06/2021 17:36:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PeopleInfo](
    [PersonId] [int] NOT NULL,[FirstName] [text] NOT NULL,[LastName] [text] NOT NULL,[Age] [int] NULL
) ON [PRIMARY] TEXtimage_ON [PRIMARY]
GO
/****** Object:  Index [PK__PeopleIn__AA2FFBE5FDC5E42D]    Script Date: 23/06/2021 17:36:21 ******/
ALTER TABLE [dbo].[PeopleInfo] ADD PRIMARY KEY CLUSTERED 
(
    [PersonId] ASC
)WITH (PAD_INDEX = OFF,STATISTICS_norECOmpuTE = OFF,SORT_IN_TEMPDB = OFF,IGnorE_DUP_KEY = OFF,ONLINE = OFF,ALLOW_ROW_LOCKS = ON,ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

文件 2

USE [sql-database-two]
GO
/****** Object:  Table [dbo].[PeopleInfo]    Script Date: 23/06/2021 17:54:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PeopleInfo](
    [PersonId] [int] NOT NULL,[Age] [int] NULL,[SecondName] [text] NOT NULL
) ON [PRIMARY] TEXtimage_ON [PRIMARY]
GO
/****** Object:  Index [PK__PeopleIn__AA2FFBE59EF41C87]    Script Date: 23/06/2021 17:54:58 ******/
ALTER TABLE [dbo].[PeopleInfo] ADD PRIMARY KEY CLUSTERED 
(
    [PersonId] ASC
)WITH (PAD_INDEX = OFF,ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

我的python代码是这样的:

print('''
###########################################
#           Comparing Schemas             #
###########################################
''')
time.sleep(3)
file1 = open("file1.sql",'r')
file2 = open("file2.sql",'r')

diff = difflib.context_diff(file1.readlines(),file2.readlines())
# delta = ''.join(x[2:] for x in diff if x.startswith('! ') or x.startswith('+ '))
delta = ''.join(diff)
print(delta)




with open('file1.sql','r+') as prod,open('file2.sql') as dev:
    result = open('result.sql','w')
    f1 = [i for i in file1.readlines()]
    f2 = [j for j in file2.readlines()]
    f1 += [item for item in f2 if item not in f1]
    file1.seek(0)
    differences = 0
    for line in f2:
        if line.__contains__('! '):
            ++differences
            print(f'There are: {differences} differences')
        result.write(line)

print(f'''
------------------------------------------------ \n
|==> Diffs successfully written in {result.name}
    ''')

如果您需要更多信息,请询问。在此先感谢您

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)