如何向Python交互式shell添加命令?

Con*_*ler 2 python interactive cpython readline

我正在尝试为我在Python中定期输入的命令保存一些按键.

在我的python启动脚本中,我定义了一个名为load的函数,它类似于import,但增加了一些功能.它需要一个字符串:

def load(s):
  # Do some stuff
  return something
Run Code Online (Sandbox Code Playgroud)

为了调用这个函数,我必须输入

>>> load('something')
Run Code Online (Sandbox Code Playgroud)

我宁愿能够简单地输入:

>>> load something
Run Code Online (Sandbox Code Playgroud)

我正在运行带有readline支持的Python ,所以我知道那里存在一些可编程性,但我不知道是否可以使用它.

我尝试通过InteractivConsole在我的启动文件中使用并创建它的实例来解决这个问题,如下所示:

import code, re, traceback

class LoadingInteractiveConsole(code.InteractiveConsole):
  def raw_input(self, prompt = ""):
    s = raw_input(prompt)
    match = re.match('^load\s+(.+)', s)
    if match:
      module = match.group(1)
      try:
        load(module)
        print "Loaded " + module
      except ImportError:
        traceback.print_exc()
      return ''
    else:
      return s

console = LoadingInteractiveConsole()
console.interact("")
Run Code Online (Sandbox Code Playgroud)

这有点需要注意,我必须按两次Ctrl-D才能退出python解释器:一次退出我的自定义控制台,一次退出真正的控制台.

有没有办法在不编写自定义C程序并将解释器嵌入其中的情况下执行此操作?

编辑

在频道之外,我有建议将其附加到我的启动文件的末尾:

import sys
sys.exit()
Run Code Online (Sandbox Code Playgroud)

它运作良好,但我仍然对替代解决方案感兴趣.

use*_*019 7

你可以尝试ipython - 它提供了一个python shell,允许很多东西,包括自动括号,它可以根据你的要求为你提供函数调用.