我想這樣做:有沒有辦法讓Python在腳本中間變成交互式的?
do lots of stuff to prepare a good environement
become_interactive
#wait for Ctrl-D
automatically clean up
是否有可能與蟒蛇如果沒有,你看到做同樣的事情的另一種方式?
我想這樣做:有沒有辦法讓Python在腳本中間變成交互式的?
do lots of stuff to prepare a good environement
become_interactive
#wait for Ctrl-D
automatically clean up
是否有可能與蟒蛇如果沒有,你看到做同樣的事情的另一種方式?
您可以在任何地方使用它並保留示波器。 – 2014-10-05 13:54:43
你可以叫Python本身:
import subprocess
print "Hola"
subprocess.call(["python"],shell=True)
print "Adios"
的code
模塊將允許你啓動一個Python REPL。
不完全是你想要的東西,但python -i
將在執行腳本後啓動交互式提示。
-i
:檢查行書交互後,(也PYTHONINSPECT = x)和力的提示,即使標準輸入不出現你的時候是終端
$ python -i your-script.py
Python 2.5.4 (r254:67916, Jan 20 2010, 21:44:03)
...
>>>
使用-i標誌啓動Python並設置一個在清理時運行的atexit處理程序。
文件script.py:
import atexit
def cleanup():
print "Goodbye"
atexit.register(cleanup)
print "Hello"
,然後你剛開始用Python -i標誌:
C:\temp>\python26\python -i script.py
Hello
>>> print "interactive"
interactive
>>> ^Z
Goodbye
爲了詳細說明IVA的回答是:embedding-a-shell,incoporating code
和IPython的。
def prompt(vars=None, message="welcome to the shell"):
#prompt_message = "Welcome! Useful: G is the graph, DB, C"
prompt_message = message
try:
from IPython.Shell import IPShellEmbed
ipshell = IPShellEmbed(argv=[''],banner=prompt_message,exit_msg="Goodbye")
return ipshell
except ImportError:
if vars is None: vars=globals()
import code
import rlcompleter
import readline
readline.parse_and_bind("tab: complete")
# calling this with globals ensures we can see the environment
print prompt_message
shell = code.InteractiveConsole(vars)
return shell.interact
p = prompt()
p()
謝謝大家!爲了記錄在案,使用代碼模塊實現這一目標的最簡單的方法是: 導入代碼 code.interact(本地=全局()) – 2010-04-12 12:15:55
要獲得局部變量到命名空間,以及,你需要 ' code.interact(local = dict(globals(),** locals())'。 請注意'** locals'的增加,我自己在想這個問題,你的評論是我發現的最佳答案。 ) – 2013-07-03 21:34:42