有没有一种方法可以让Python脚本自动检测它是否正在交互式运行?另外,能否检测出使用IPython和普通的C Python可执行文件之间的区别?
背景:我的Python脚本通常都有一个调用exit()的语句。偶尔我会交互式地运行脚本进行调试和分析,通常是在IPython中。当我交互式运行时,我想抑制对exit()的调用。
澄清:
假设我有一个名为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)
python
得到的标准交互式 shell 怎么样? - n611x007