Нахождение разницы не работает
Я пытаюсь найти разницу из двух файлов, но все же я получаю ответ из двух файлов
Это мой код
#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)
Но все же я получаю одинаковые результаты из двух файлов, но содержимое файла 1 следует удалить после сравнения с файлом 2
2 ответа
То, что вы делаете неправильно, -
c = set(a).union(set(b))
d = set(a).intersection(set(b))
пожалуйста, обратите внимание a
а также b
все еще остаются файловые дескрипторы, как только вы это сделаете set(a)
если вы делаете set(a)
опять же, вы получите пустой набор, потому что при первом вызове set(a)
, весь файл уже прочитан, а курсор для файла находится в конце.
Вам нужно изменить свой код так, чтобы вы звонили только set(a)
и `установить (б) один раз. Нечто подобное
#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)