2014-09-06 3 views
2

У меня есть программа в python 2.7, которая принимает параметры командной строки с использованием argparse, однако если я попытаюсь ввести строку, содержащую амперсанд, я потеряю символы после этого амперсанда.Как обрабатывать амперсанд как часть аргумента командной строки в python

Например:

У меня есть простая программа питона только для проверки ввода аргументов командной строки и просто выводит то, что было введено для одного параметра командной строки.

По существу: print args.where

Когда я запускаю программу, с аргументом, как это:

$ python args.py -a http://www.website.com?optionone=one&numbertwo=two 

только текст выводится на экран является: http://www.website.com?optionone=one

У меня есть аналогичные результаты при использовании sys и printIng с использованием Argv

Как я могу получить полный набор строк д?

ответ

2

Это проблема с вашей оболочкой. Поместите аргумент в кавычки.

+0

я заметил, что котировки сделал работу правильно, но забыл упомянуть, что в этом вопросе. Их нет в использовании? – John

+0

@ Джон, вы использовали двойные кавычки или сингл? IIRC, одинарные кавычки должны защищать амперсанд ... – MattDMo

+0

@John: это зависит от используемой оболочки. Если оболочка считает амперсанд персонажем со специальным значением для оболочки (как я думаю, почти все они делают - даже 'cmd.exe' в Windows), тогда вам нужно что-то сделать, чтобы получить оболочку этот символ как часть аргумента. Цитата - один из распространенных способов сделать это, избегая символа (как упоминает Дэниел Скотт) - это другое. –

0

Вы можете избежать амперсанд с обратной косой черты:

$ python args.py -a http://www.website.com?optionone=one\&numbertwo=two 
Смежные вопросы