python比较两个文本文档';内容
我试图用python比较两个文本文档,只是通过返回真/假答案来说明文本文档的内容是否相同python比较两个文本文档';内容,python,Python,我试图用python比较两个文本文档,只是通过返回真/假答案来说明文本文档的内容是否相同 filehandle1=open(filename1,"r") filehandle2=open(filename2,"r") for line1 in filehandle1: for line2 in filehandle2: if line1==line2: print (True) else: print (Fa
filehandle1=open(filename1,"r")
filehandle2=open(filename2,"r")
for line1 in filehandle1:
for line2 in filehandle2:
if line1==line2:
print (True)
else:
print (False)
我对Python非常陌生,对它没有太多的了解。我想知道是否有人知道一种比较两个文本文档的简单方法
我正在使用的文档包含:
正文1:
123456789
12345678
1234567
123456
12345
1234
123
12
文本2:
12
123
1234
12345
123456
1234567
12345678
123456789
文本3:
123456789
12345678
1234567
123456
12345
1234
123
12
我非常感谢你的帮助
谢谢。如果您只想比较两个文件是否包含相同的文本,您可以将它们作为一个整体进行比较,而不是逐行比较:
filehandle1.read() == filehandle2.read()
另外,打开文件后不要忘记关闭它们。如果您只想比较两个文件是否包含相同的文本,您可以将它们作为一个整体进行比较,而不是逐行比较:
filehandle1.read() == filehandle2.read()
另外,打开文件后不要忘记关闭它们。您可以使用模块:
您可以使用以下模块:
这里有一个更好的方法<代码>邮政编码用于相同的短距离匹配
这里有一个更好的方法zip
用于相同的短距离匹配。@Hackaholic的答案(使用filecmp
)可能是最好的。但是,如果您确实希望自己逐行进行比较,那么最好的方法可能是:
def EqualContent(filename1, filename2):
with open(filename1) as f1, open(filename2) as f2:
return all(s1==s2 for s1, s2 in zip(f1, f2))
(在Python2中,导入未来的内置内容
以确保内置内容与Python3中的工作方式相同!)
这不需要足够的内存来同时将两个文件保存在内存中(类似于基于read
或readlines
do的方法),每次只需从每个文件中取出一行;而且,如果文件确实不同,它将最小化所需的I/O量;这是因为all
被设计为“快速失败”——在发现两行不同时立即返回False
(当然,在返回True之前,它确实需要走到末尾)
在Python2中,如果没有import-future\u-builtins
,zip
实际上会读取两个文件中的所有行,从而抵消其优势(Python3更智能,并且可以使Python2.7与import
!-)一样智能。@Hackaholic的答案(使用filecmp
)可能是最好的。但是,如果您确实希望自己逐行进行比较,那么最好的方法可能是:
def EqualContent(filename1, filename2):
with open(filename1) as f1, open(filename2) as f2:
return all(s1==s2 for s1, s2 in zip(f1, f2))
(在Python2中,导入未来的内置内容
以确保内置内容与Python3中的工作方式相同!)
这不需要足够的内存来同时将两个文件保存在内存中(类似于基于read
或readlines
do的方法),每次只需从每个文件中取出一行;而且,如果文件确实不同,它将最小化所需的I/O量;这是因为all
被设计为“快速失败”——在发现两行不同时立即返回False
(当然,在返回True之前,它确实需要走到末尾)
在Python2中,如果没有
import-future\u-builtins
,zip
实际上会读取这两个文件中的所有行,从而抵消了它的优势(Python3更智能——您可以使Python2.7与import
!-)相比?有你想要的输出吗?为什么不直接比较文件内容的大小呢?我对这个很陌生,所以我不熟悉散列。输出应该是布尔值。我只是陷入困境。@AnthonyForloney我认为在这种情况下,速度/内存没有优势。比较一下?有你想要的输出吗?为什么不直接比较文件内容的大小呢?我对这个很陌生,所以我不熟悉散列。输出应该是布尔值。“我只是遇到了麻烦。”安托尼福洛尼说,“我认为在这种情况下,速度/内存没有优势。