私は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
とにかく、何か考えはありますか?