Как я могу добавить команду на интерактивную оболочку Python?
-
26-09-2019 - |
Вопрос
Я пытаюсь спасти себя всего несколько нажатий на клавише для команды, которую я вводит довольно регулярно в 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.