Я написал функцию, которая принимает до 4 опций и 2 аргумента. Возможные значения: -1, -2, -3 и -u. По умолчанию их значения равны true, true, true и false, соответственно, но включение любого из параметров приводит к переводу значения. Проблема заключается в том, даже если я указываю, скажем,Python optparse не принимает параметры
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' – Navith
Хорошо, я изменил его на -1 -2 -u, и теперь вывод True, False, True, True - однако первый вариант должен быть False , Кроме того, я думал, что пробелы между отдельными опциями не нужны – gallardoelise
Измените 'sys.argv [2:]' на 'sys.argv [1:]' – Navith