Я пытаюсь выполнить трехстороннее сравнение в некоторых списках, Затем сохраните разницу, если она найдена в файле. Ниже приведен код, который у меня есть. У меня возникли проблемы с поиском, как сохранить отсутствующий файл (если он найден) в текстовом файле.Сохранить результаты cmp() в файл
Я также знаю, что сравнительный код не является оптимальным, но я новичок в программировании и просто пробую разные вещи. Если у кого-то есть лучшая идея, дайте мне знать. Я здесь, чтобы учиться.
Сравнение Код
def three_way_compare(startup, running, archive):
if cmp(startup, archive) and cmp(running, archive) != 0:
print "Archive File Missing: "
print set(startup)^set(archive)
elif cmp(startup, archive) != 0:
print "Startup File Missing: "
print "File missing: "
print set(startup)^set(archive)
elif cmp(running, archive) != 0:
print "Running File Missing: "
print set(running)^set(archive)
elif cmp(running, startup) != 0:
print "Running and Startup do not match"
print "Missing Files: "
print set(running)^set(startup)
else:
print "All Files match"
Write Files Код
def write_diff_file():
from datetime import datetime
datestring = datetime.strftime(datetime.now(), '%Y-%m-%d')
f = open('filediff_' + datestring + '.txt', 'w')
f.name
Что-то подобное,
если three_way_compare == Правда # возвращает разницу затем записать файл с текущей датой с найденной разницей
Думаю, я решил это, сделав это.
Обновлено сравнение Код:
def three_way_compare(startup, running, archive):
isdiff = True
if cmp(startup, archive) and cmp(running, archive) != 0:
print "Archive File Missing: "
compareset = set(startup)^set(archive)
elif cmp(startup, archive) != 0:
print "Startup File Missing: "
compareset = set(startup)^set(archive)
elif cmp(running, archive) != 0:
print "Running File Missing: "
compareset = set(running)^set(archive)
elif cmp(running, startup) != 0:
print "Running and Startup do not match"
compareset = set(running)^set(startup)
else:
print "All Files match"
isdiff = False
if isdiff == True:
write_diff_file(compareset)
Обновлено Write Files Код:
def write_diff_file(x):
from datetime import datetime
datestring = datetime.strftime(datetime.now(), '%Y-%m-%d')
with open('filediff_' + datestring + '.txt', 'w') as f:
f.write(str(x))
f.name
Это будет работать при нормальном написать. Но я хочу, чтобы файл записывался как определенное имя файла и записывался только в том случае, если разница найдена. С той разницей, что записано в файл. – NineTail