python скрипт не работает, когда написан как функция - PullRequest
0 голосов
/ 31 января 2020

У меня есть скрипт python, который должен найти разницу между двумя файлами, который работает нормально, но когда я пытаюсь написать его как функцию, он не работает.

    def diff_tool ():

    with open('C:\\Users\\rites\\Downloads\\2018temp_new.json', encoding="utf-8") as f1:
        f1_text = f1.read().splitlines()
    with open('C:\\Users\\rites\\Downloads\\2019tempnew.json', encoding="utf-8") as f2:
        f2_text = f2.read().splitlines()

   # Find and print the diff:
    diffile= []
    diff = difflib.Differ()
    for line in diff.compare(f1_text, f2_text):
        #json.dump(line,f, indent=2)
        if line.startswith(("-", "+", "?")):
            diffile.append(line)
            #print (line, file=f)]updated=[]
            #lines = diff.splitlines()
            updated, deleted, inserted = [],[],[]
            lines = [line for line in diffile if line.find('"header"') == -1]
            for i in range(len(lines)):
                try:
                    if lines[i+1].startswith('?'):
                        if lines[i].startswith('-'):
                            updated.append(lines[i])
                            updated.append (lines[i+1])
                    else:
                        if lines[i].startswith('+'):
                            deleted.append(lines[i])
                        elif lines[i].startswith('-'):
                            inserted.append(lines[i])
                except IndexError:
                    continue
            lists = ["updated", "deleted", "inserted"]
            data = {listname: globals()[listname] for listname in lists}
            with open ('diff_result.json', 'w', encoding='utf-8') as outfile:
                json.dump(data,outfile)

Я хочу запишите это как функцию, которую я хочу позже поставить как сервис. Я новичок в python и пробую его.

Когда я запускаю его в консоли python, я получаю сообщение об ошибке ниже ключа -

 data = {listname: globals()[listname] for listname in lists}
KeyError: 'updated'

Имеется ключ "обновлено" .

1 Ответ

0 голосов
/ 31 января 2020

Как прокомментировал Янн, вам нужно вызвать функцию с помощью:

diff_tool(f1_text, f2_text)

И обязательно вызывать ее после ваших with операторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...