Я только начинаю на 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)
Это работает , но мне не нравится, как это выглядит. Есть ли лучший способ написать это (возможно, только с 1 функцией) и есть ли любая другая вещь Я должен быть обеспокоен выходом ?
Теперь о некотором фоне (но не о 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
? Я действительно всегда стараюсь их избегать, хотя. Конечно, я думал об использовании if
вместо другого def
, но это не было бы лучше или хуже.
В любом случае, есть мысли?