【发布时间】:2013-03-14 04:23:36
【问题描述】:
我有 2 个格式如下的文件:
file1:
work1
7 8 9 10 11
1 2 3 4 5
6 7 8 9 10
file2:
work2
2 3 4 5 5
2 4 7 8 9
work1
7 8 9 10 11
1 2 4 4 5
6 7 8 9 10
work3
1 7 8 9 10
现在我想与文件进行比较,并且无论标题(work1)是否相等..我想比较后续部分并打印发现差异的行。例如
work1 (file1)
7 8 9 10 11
1 2 3 4 5
6 7 8 9 10
work1 (file2)
7 8 9 10 11
1 2 4 4 5
6 7 8 9 10
现在我想打印出现差异的行,即“1 2 4 4 5”
为此,我编写了以下代码:
with open("file1",) as r, open("file2") as w:
for line in r:
if "work1" in line:
for line1 in w:
if "work1" in line1:
print "work1"
但是,从这里开始,我对如何同时读取这两个文件感到困惑。有人可以帮我解决这个问题...因为在比较“work1”之后我没有得到我应该如何并行读取文件
【问题讨论】:
-
将两者都读入内存(每个 r.read() 和 w.read() 都读入一个变量),然后进行比较。并行不是正确的词。
-
CppLearner 该方法只有在我的文件不大的情况下才可行,对于大文件该方法不可行
-
好点。好吧,如果您确定
work1之类的标头不会在同一个文件中重复,那么您可以打开文件并读取子字符串出现和结束的位置以及下一个标头出现的位置。将它们记录在两个文件中,然后阅读。我不知道性能与 stackoverflow.com/questions/3322419/… 相比如何,后者将两个文件读入同一个迭代器。 -
看起来像是数据库的工作。
-
你的目标是模仿
diff比如winmerge.org 吗?或者你只关心第一个区别,然后退出?
标签: python python-2.7