optparse для работы, если нет вариантов в Python

Мне нужно загрузить аргумент, даже если есть опция и если нет опции.

#!/usr/bin/python
import optparse

parser = optparse.OptionParser()
parser.add_option('-i', dest='name', help='some')
parser.add_option('-c', dest='name', help='some')
parser.add_option('-p', action='store', help='password')

print parser.parse_args()

[root@server tmp]# ./test -i abc
(<Values at 0x4011368: {'p': None, 'name': 'abc'}>, [])
[root@server tmp]# ./test  abc
(<Values at 0x5855368: {'p': None, 'name': None}>, ['abc'])

Теперь мне нужно иметь значение "abc", даже если я не использую никакой опции. Поэтому, пожалуйста, дайте знать, как я могу получить доступ к этому значению.

2 ответа

Основываясь исключительно на вашей продукции, вы сможете увидеть, что parse_args возвращает кортеж Первый элемент этого кортежа - это объект, содержащий значения для определенных параметров, а второй элемент - список аргументов, оставшихся после анализа параметров. Вы можете прочитать больше об этом в официальном уроке.

Имея это в виду, вы можете просто написать

options, arguments = parser.parse_args()

и использовать arguments делать что угодно с этим списком.

Однако, похоже, ваша проблема заключается в том, что при указании параметра аргумент анализируется как значение параметра. Это вызвано тем, как вы определяете параметры, потому что параметры -i а также -c нужны ценности.

Если вы хотите, чтобы эти параметры были логическими, вы должны определить это вручную. Пример для одного варианта кода будет что-то вроде

# This defines an option which set name to True if option is provided, otherwise
# name is set to False
parser.add_option('-i', dest='name', help='some', action="store_true", default=False)

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

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

Другие вопросы по тегам