Воссоздание интерпретатора в Python, похожего на оболочку? - PullRequest
2 голосов
/ 25 сентября 2011

Прежде чем я сижу и начинаю взламывать его, я подумал, что приду сюда и посмотрю, есть ли у вас какие-нибудь советы или даже что-то подобное было сделано раньше.

Я хочу воссоздать базовую оболочку, подобную синтаксису, в программе на Python. Другими словами, когда люди запускают файл с python, их приветствует небольшая подсказка

>> 

Для простых вещей, используя синтаксический анализатор опций, чтобы сказать

opt.parse_args(input.split(" "))

Работает просто отлично, но теперь я хотел бы не только экранировать специальные символы, такие как пробелы, с символом '\', но также обрабатывать строки в кавычках как один аргумент, как в оболочке unix.

Существует ли что-нибудь, что уже может помочь с этим?

Спасибо за любые предложения! - Погоня

Ответы [ 2 ]

15 голосов
/ 25 сентября 2011

Начните с модуля shlex:

$ pydoc shlex
Help on module shlex:

NAME
    shlex - A lexical analyzer class for simple shell-like syntaxes.

Вы можете использовать его так:

>> import shlex
>> shlex.split('This "is a" test.')
['This', 'is a', 'test']

Это просто разбивает вещи на логические токены; это не будет делать ничего, как расширение переменных и так далее. Это все зависит от вас, так как на самом деле выполняются команды.

4 голосов
/ 25 сентября 2011

Вы видели шлекс из стандартной библиотеки? Проверьте это пример .

...