寻找差异是行不通的
Finding difference is not working
我试图从两个文件中找出不同之处,但我仍然从两个文件中得到答案
这是我的代码
#File one(This file contents should be removed after comparing file two)
a = open('diff1','r+')
#File two
#This file has 999999 records
b = open('gtin','r+')
f8 = open('missing-test-remove.txt','w')
def diff(a, b):
c = set(a).union(set(b))
d = set(a).intersection(set(b))
result = list(c - d)
for s in result:
print s
f8.write(s)
diff(a,b)
但是我仍然从两个文件中得到相同的结果,但是在与文件二进行比较后,文件一的内容应该被删除
你做错的是-
c = set(a).union(set(b))
d = set(a).intersection(set(b))
请注意 a
和 b
仍然是文件描述符,一旦你执行 set(a)
,如果你再次执行 set(a)
,你将得到一个空集,因为在第一次调用 set(a)
时,已经读取了完整的文件,文件的光标位于末尾。
您需要更改代码,以便只调用 set(a)
和 `set(b) 一次。类似于 -
#File one(This file contents should be removed after comparing file two)
a = open('diff1','r+')
#File two
#This file has 999999 records
b = open('gtin','r+')
f8 = open('missing-test-remove.txt','w')
def diff(a, b):
sa = set(a)
sb = set(b)
c = sa.union(sb)
d = sa.intersection(sb)
result = list(c - d)
for s in result:
print s
f8.write(s)
diff(a,b)
此外,您应该刷新写入的文件,在完成写入后并在结束时关闭所有文件 -
a.close()
b.close()
f8.close()
您需要保存设置值。一个简单的测试:
print a
print set(a)
print a
print set(a) # wrong
所以
seta = set(a)
setb = set(b)
setc = seta.union(setb)
setd = seta.intersection(setb)
我试图从两个文件中找出不同之处,但我仍然从两个文件中得到答案
这是我的代码
#File one(This file contents should be removed after comparing file two)
a = open('diff1','r+')
#File two
#This file has 999999 records
b = open('gtin','r+')
f8 = open('missing-test-remove.txt','w')
def diff(a, b):
c = set(a).union(set(b))
d = set(a).intersection(set(b))
result = list(c - d)
for s in result:
print s
f8.write(s)
diff(a,b)
但是我仍然从两个文件中得到相同的结果,但是在与文件二进行比较后,文件一的内容应该被删除
你做错的是-
c = set(a).union(set(b))
d = set(a).intersection(set(b))
请注意 a
和 b
仍然是文件描述符,一旦你执行 set(a)
,如果你再次执行 set(a)
,你将得到一个空集,因为在第一次调用 set(a)
时,已经读取了完整的文件,文件的光标位于末尾。
您需要更改代码,以便只调用 set(a)
和 `set(b) 一次。类似于 -
#File one(This file contents should be removed after comparing file two)
a = open('diff1','r+')
#File two
#This file has 999999 records
b = open('gtin','r+')
f8 = open('missing-test-remove.txt','w')
def diff(a, b):
sa = set(a)
sb = set(b)
c = sa.union(sb)
d = sa.intersection(sb)
result = list(c - d)
for s in result:
print s
f8.write(s)
diff(a,b)
此外,您应该刷新写入的文件,在完成写入后并在结束时关闭所有文件 -
a.close()
b.close()
f8.close()
您需要保存设置值。一个简单的测试:
print a
print set(a)
print a
print set(a) # wrong
所以
seta = set(a)
setb = set(b)
setc = seta.union(setb)
setd = seta.intersection(setb)