问题描述
我是 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 (将#修改为@)