2013-11-18 6 views
1

У меня следующая ситуация:аргументы командной строки Cmd2

import sys 
from cmd2 import Cmd, make_option, options 

class DemoApp(Cmd): 
    """Simple command processor example.""" 

    @options([make_option('-n', '--name', action="store", help="your name"), 
     ]) 
    def do_hello(self, command, opts): 
     if opts.name: 
      sys.stdout.write('Hello %s\n' % opts.name) 
     else: 
      sys.stdout.write('Hello Nobody\n') 

if __name__ == '__main__': 
    DemoApp().cmdloop() 

Я хочу передать строку с пробелами в качестве опции для В параметре -n. (В то время как в Cmd2 ПРОМТ)

пример:

-> привет -n 'Мой удивительный имя'

, когда я делаю что он напечатал:

Hello «My

то же самое также с двойными котировками

, поэтому он не принимает места. Кто-нибудь знает, как это сделать?

+0

Возможно, могут быть двойные кавычки? – qwertynl

+0

@qwertynl nope то же самое. – gosom

ответ

0

Я понял, что это произошло. Я отправил ошибку в: https://bitbucket.org/catherinedevlin/cmd2/issues?status=new&status=open

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

0

Версия 0.7 cmd2 имеет исправление для этой проблемы. cmd2 теперь корректно обрабатывает цитируемые аргументы как один аргумент, независимо от наличия пробелов внутри кавычек. Вы можете установить последнюю версию cmd2 из PyPI с помощью:

pip install -U cmd2 
Смежные вопросы