Как я могу добавить команду на интерактивную оболочку Python?

StackOverflow https://stackoverflow.com/questions/4017204

Вопрос

Я пытаюсь спасти себя всего несколько нажатий на клавише для команды, которую я вводит довольно регулярно в Python.

В моем Сценарий запуска Python, Я определяю функцию, называемую нагрузкой, которая похожа на импорт, но добавляет некоторую функциональность. Требуется одна строка:

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

Для того, чтобы вызвать эту функцию, я должен ввести

>>> load('something')

Я предпочел бы просто просто набрать:

>>> 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()

Работает достаточно хорошо, но я все еще заинтересован в альтернативных решениях.

Это было полезно?

Решение 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 прекратится выполнением, а улучшенная интерактивная сессия будет бесшовным.

Другие советы

Вы могли бы попробовать айфон - что дает раковину Python, которая позволяет многим вещам, включая Автоматические скобки Что дает вам функцию вызова по запросу.

Я думаю, вы хотите модуль CMD.

Смотрите учебник здесь:http://wiki.python.org/moin/cmdmodule.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top