python脚本有没有办法自动检测它是否以交互方式运行?或者,是否可以检测是否正在使用 ipython 与常规的 c python 可执行文件?
背景:我的 python 脚本通常在其中调用 exit()。有时,我会以交互方式运行脚本以进行调试和分析,通常是在 ipython 中。当我以交互方式运行时,我想抑制退出的调用。
澄清:
假设我有一个脚本 myscript.py,它看起来像:
#!/usr/bin/python
...do useful stuff...
exit(exit_status)
有时,我想在已经启动的 IPython 会话中运行脚本,例如:
In [nnn]: %run -p -D myscript.pstats myscript.py
在脚本结束时,exit() 调用将导致 ipython 在询问我是否真的要退出时挂起。这是调试时的一个小麻烦(对我来说太小了),但它会弄乱分析结果:退出提示会包含在分析结果中(如果我在去吃午饭前开始分析会话,会使分析更加困难) .
我想要的是允许我修改我的脚本的东西,它看起来像:
#!/usr/bin/python
...do useful stuff...
if is_python_running_interactively():
print "The exit_status was %d" % (exit_status,)
else:
exit(exit_status)