Я считаю, что проблема в том, что вы используете set().difference(t)
вместо set().symmetric_difference(t)
Из документов Python set().difference(t)
определяется как возвращающий new set with elements in s but not in t
, тогда как set().symmetric_difference(t)
возвращает new set with elements in either s or t but not both
.
Возьмите этот код, например:
>>> s1 = [1,2,3,4,5]
>>> s2 = [1,2,3,4,5,6]
>>> set(s1).difference(s2)
set()
>>> set(s1).symmetric_difference(s2)
{6}
Как видите, set().difference(t)
не возвращает разницу между двумя наборами, а, скорее, любые элементы в s1, которых нет в s2. Я верю, если вы замените линию
difference = set(masterfile).difference(usedfile)
с
difference = set(masterfile).symmetric_difference(usedfile)
тогда ваш код будет работать.