Я только начинаю с Python и, может быть, слишком рано слишком беспокоюсь, но все равно...
log = "/tmp/trefnoc.log"
def logThis (text, display=""):
msg = str(now.strftime("%Y-%m-%d %H:%M")) + " TREfNOC: " + text
if display != None:
print msg + display
logfile = open(log, "a")
logfile.write(msg + "\n")
logfile.close()
return msg
def logThisAndExit (text, display=""):
msg = logThis(text, display=None)
sys.exit(msg + display)
Работает, но мне не нравится, как это выглядит. Есть ли лучший способ написать это (возможно, только с одной функцией), и есть ли любая другая вещь Я должен быть обеспокоен выходом?
Теперь к некоторому фону (но не о trefnoc)...
Иногда я вызываю logThis
только для регистрации и отображения. В других случаях я хочу позвонить и выйти. Первоначально я делал это:
logThis ("ERROR. EXITING")
sys.exit()
Тогда я понял, что неправильно установил stderr
, поэтому текущий код показан сверху.
Моя первая идея состояла в том, чтобы передать "sys.exit" в качестве аргумента и определить только logThis ("ERROR. EXITING", call=sys.exit)
, определяемый следующим образом (показывая только соответствующую разную часть):
def logThis (text, display="", call=print):
msg = str(now.strftime("%Y-%m-%d %H:%M")) + " TREfNOC: " + text
call msg + display
Но это явно не сработало. Я думаю, что Python не хранит функции внутри переменных. Я не мог (быстро) найти где-нибудь, если Python может иметь переменные, принимающие функции или нет! Может быть, с помощью функции eval
? Я всегда стараюсь избегать их, тo. Конечно, я думал использовать if
вместо другого def
, но это не было бы лучше или хуже.
В любом случае, какие-то мысли?