2016-12-21 3 views
0

Я пытаюсь выполнить трехстороннее сравнение в некоторых списках, Затем сохраните разницу, если она найдена в файле. Ниже приведен код, который у меня есть. У меня возникли проблемы с поиском, как сохранить отсутствующий файл (если он найден) в текстовом файле.Сохранить результаты 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 

ответ

0

Вы можете сделать это следующим образом:

content = 'what I want to save' 
with open('myfile.txt', 'w') as logfile: 
    logfile.write(content) # the 'with' keyword will close the file for you 
+0

Это будет работать при нормальном написать. Но я хочу, чтобы файл записывался как определенное имя файла и записывался только в том случае, если разница найдена. С той разницей, что записано в файл. – NineTail