NameError: глобальное имя 'myLogFile' не определено - PullRequest
0 голосов
/ 29 марта 2012

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

Функция, которую я поместил в отдельный .py:

def output_messaging(message):
    global myEmailText
    myLogFile.write(message)
    myEmailText = myEmailText + message
    print message

Сценарий, который я запускаю, имеет следующий код:

def finish_process(errors):
    global myLogFile
    myLogFile.close()
    if errors == 0:
        myEmailHeader = "Subject: **"
    elif errors == 1:
        myEmailHeader = "Subject: **"
    else:
        myEmailDestination.append("**") 
        #myEmailHeader = "Subject: **"
    server = smtplib.SMTP(myServer) #email data log to nominated individuals
    server.sendmail(myEmailSender, myEmailDestination, myEmailHeader + "\n" + myEmailText)
    server.quit()

Когда я запускаю скрипт, я получаю следующую ошибку.

NameError: global name 'myLogFile' is not defined

myLogFile объявлен ниже в коде (это местоположение файла журнала), но я немного запутался.

Спасибо

Ответы [ 2 ]

1 голос
/ 29 марта 2012

Ошибка понятна. myLogFile не определено нигде в вашей функции output_messaging. Вам нужно определить его в этой функции или передать как параметр.

Вы все равно не должны использовать глобалы, они почти всегда плохая идея. Передайте параметры явно.

0 голосов
/ 29 марта 2012

В output_messaging у вас нет global myLogFile, чтобы указать, что myLogFile определено где-то еще в файле. Когда Python запускает эту функцию, он не распознает переменную.

Обратите внимание, что глобальные переменные, как правило, не рекомендуется, но это другое обсуждение.

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