2

Python でかなり定期的に入力するコマンドのキーストロークを数回だけ節約しようとしています。

私のpython startup scriptでは、 import に似た load という関数を定義していますが、いくつかの機能を追加しています。単一の文字列を取ります:

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

この関数を呼び出すには、入力する必要があります

>>> load('something')

単純に次のように入力したいと思います。

>>> load something

私は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("")

これは、Python インタープリターを終了するために Ctrl-D を 2 回押す必要があるという警告に対応しています。

カスタム C プログラムを作成してインタープリターを埋め込むことなく、これを行う方法はありますか?

編集

チャンネル外で、これをスタートアップ ファイルの最後に追加することを提案しました。

import sys
sys.exit()

それは十分に機能しますが、私はまだ代替ソリューションに興味があります.

4

3 に答える 3

7

ipythonを試すことができます-これは、要求どおりに関数呼び出しを提供する自動括弧を含む多くのことを許可する python シェルを提供します。

于 2010-10-25T17:41:27.577 に答える
0

私自身の質問に答えるのは嫌いですが、私が使用している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は実行を停止し、改善されたインタラクティブセッションはシームレスになります。

于 2010-11-02T18:20:02.207 に答える
0

cmd モジュールが必要だと思います。

ここでチュートリアルを参照してください: http://wiki.python.org/moin/CmdModule

于 2010-10-25T17:29:19.560 に答える