Python sys.argv для сохранения ' ' или

Терминал:

python test.py blah='blah'

в test.py

print sys.argv
['test.py', 'blah=blah'] <------------ 

Как может blah arg сохранить свой '' ИЛИ
Есть ли способ узнать, обернут ли arg символом "" или ''?


person ealeon    schedule 01.10.2013    source источник
comment
Это не то, что контролирует Python. Это ваша оболочка, удаляющая кавычки перед передачей в Python.   -  person Martijn Pieters    schedule 01.10.2013
comment
Это оболочка, которая «раздевает» кавычки; вместо этого используйте python test.py "blah='blah'".   -  person Gumbo    schedule 01.10.2013
comment
Похоже, это проблема XY. Зачем тебе цитаты?   -  person dawg    schedule 01.10.2013
comment
Если вам нужно, чтобы ваше приложение принимало текст в произвольной форме вместо символических данных из аргументов командной строки, вероятно, будет проще прочитать его из стандартного ввода.   -  person millimoose    schedule 01.10.2013
comment
пожалуйста, укажите ОС или оболочку, которую вы используете   -  person Bleeding Fingers    schedule 01.10.2013


Ответы (2)


Ваша оболочка удаляет кавычки перед вызовом Python. Это не то, чем Python может управлять.

Добавьте больше цитат:

python test.py "blah='blah'"

который также может быть помещен в любом месте аргумента:

python test.py blah="'blah'"

или вы можете использовать обратную косую черту:

python test.py blah=\'blah\'

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

Демо на bash:

$ cat test.py 
import sys
print sys.argv
$ python test.py blah='blah'
['test.py', 'blah=blah']
$ python test.py "blah='blah'"
['test.py', "blah='blah'"]
$ python test.py blah="'blah'"
['test.py', "blah='blah'"]
$ python test.py blah=\'blah\'
['test.py', "blah='blah'"]
person Martijn Pieters    schedule 01.10.2013
comment
поведение ОС не зависит? - person Bleeding Fingers; 01.10.2013
comment
@hus787: Очень даже. Это зависит от реализации оболочки. В Windows при цитировании консоли cmd используются правила, отличные от правил оболочки bash. У меня мало опыта работы с tsh или zsh, но они вполне могут использовать другие правила снова. - person Martijn Pieters; 01.10.2013

может быть

python test.py blah="'blah'"
person yakiang    schedule 01.10.2013