Я написал функцию, которая принимает до 4 опций и 2 аргумента. Возможные варианты -1, -2, -3 и -u. По умолчанию их значения установлены на true, true, true и false соответственно, но включение любого из параметров приводит к тому, что это значение меняется. Проблема в том, что даже когда я указываю, скажем,
python comm.py -1 -2 -u test test2
и распечатайте значения параметра, они по-прежнему показывают значения по умолчанию. Ниже приведена соответствующая часть моего кода:
...
...
...
parser.add_option("-1", action="store_false", dest="xcol1", default=True, help="...")
parser.add_option("-2", action="store_false", dest="xcol2", default=True, help="...")
parser.add_option("-3", action="store_false", dest="dups", default=True, help="...")
parser.add_option("-u", action="store_true", dest="donotsort", default=False, help="...")
options, args = parser.parse_args(sys.argv[2:])
xcol1=options.xcol1
xcol2=options.xcol2
dups=options.dups
donotsort=options.donotsort
print "xcol1:"
print xcol1
print "xcol 2:"
print xcol2
print "dups:"
print dups
print "donotsort:"
print donotsort
print args
...
...
...
Выполнение вышеупомянутой команды с приведенным выше кодом выведет:
Истинный
ЛОЖЬ
Истинный
Истинный
тест, тест2
т. е. значения по умолчанию. Он действительно должен выводить "False, False, True, True, ...), так как опции 1, 2 и u включены. Что я делаю неправильно? Это как-то связано с парсером, потому что я не На 100% уверен, что правильно использую парсер.
Кроме того, когда я перечисляю параметры как -12u
вместо -1 -2 -u
, они ведут себя по-другому - логические значения различны.
-12u
вместо-1 -2 -u
- person Navith   schedule 19.04.2015sys.argv[2:]
наsys.argv[1:]
- person Navith   schedule 19.04.2015