停止运行python脚本而不杀死解释器

时间:2015-03-03 13:57:58

标签: python interpreter kill-process

之前,我可以在解释器中通过按execfile("somescript.py")而不杀死解释器来杀死以Ctrl + C开头的python脚本。这会导致 KeyboardInterrupt 异常停止脚本,让我再次使用解释器。但是,现在(我怀疑这是python的更新版本),当我在运行脚本时按Ctrl + C时,它有时也会杀死解释器,让我回到Linux命令行。出于某种原因,每次使用Ctrl + C杀死脚本时都不会发生这种情况。

这很烦人,因为我经常以交互方式使用python解释器,即我使用execfile("somescript.py")运行一些脚本,使用它在解释器中生成的数据等等。之前,如果某些脚本卡住,我就能够在被卡住之前杀死它并且不会丢失它已计算的数据(或者我存储在变量中)。

所以我的问题是,如何在解释器中杀死一个以execfile()开头的python脚本而不杀死解释器?

1 个答案:

答案 0 :(得分:0)

通常,这是通过try语句完成的:

>>> def f():
...     try:
...         exec(open("somefile.py").read())
...     except Exception as e: print(e)
... 
>>> f()
^CTraceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in f
  File "<string>", line 4, in <module>
  File "<string>", line 3, in g
KeyboardInterrupt
>>>

somefile.py

def g():
    while True: pass
g()