我刚刚开始使用 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
,但这不会更好或更坏。
无论如何,有什么想法吗?