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

2024-09-30 06:15:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着为我在Python中经常输入的命令省去一些键击。在

在我的python startup script中,我定义了一个名为load的函数,它类似于import,但是添加了一些功能。它需要一个字符串:

def load(s):
  # Do some stuff
  return something

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

^{pr2}$

我更希望能够简单地键入:

>>> load something

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

我试图通过使用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("")

这需要注意的是,我必须按Ctrl-D两次才能退出python解释器:一次是退出自定义控制台,一次是退出实际控制台。在

有没有一种方法可以做到这一点,而不必编写一个定制的C程序并将解释器嵌入其中?在

编辑

在频道外,我建议在我的启动文件末尾附加以下内容:

import sys
sys.exit()

它工作得很好,但我仍然对其他解决方案感兴趣。在


Tags: 文件函数importreinputrawreturndef
3条回答

我不想回答我自己的问题,但是还没有一个对我使用的Python版本都有效的答案。除了我在我的问题编辑中发布的解决方案(这是我现在使用的),下面是另一个:

编辑.bashrc以包含以下行:

alias python3='python3 ~/py/shellreplace.py'
alias python='python ~/py/shellreplace.py'
alias python27='python27 ~/py/shellreplace.py'

然后简单地将所有LoadingInteractiveConsole代码移动到文件~/py/shellreplace.py中,一旦脚本执行完毕,python将停止执行,改进的交互式会话将是无缝的。在

我想你想要cmd模块。在

请参阅此处的教程: http://wiki.python.org/moin/CmdModule

您可以尝试ipython-它提供了一个pythonshell,它允许很多事情,包括{a2},它根据您的请求提供函数调用。在

相关问题 更多 >

    热门问题