У меня есть функция:
def x(a,b,c)
Как я могу собирать значения переменных из командной строки, которые соответствуют этому шаблону?
python test.py --x_center a --y_center b c
(c
имеет, например, 3, 4 или более значения)
У меня есть функция:
def x(a,b,c)
Как я могу собирать значения переменных из командной строки, которые соответствуют этому шаблону?
python test.py --x_center a --y_center b c
(c
имеет, например, 3, 4 или более значения)
Вы можете сделать что-то вроде этого:
import argparse
def x(x_center, y_center, values):
print "X center:", x_center
print "Y center:", y_center
print "Values:", values
def main():
parser = argparse.ArgumentParser(description="Do something.")
parser.add_argument('-x', '--x-center', type=float, required=True)
parser.add_argument('-y', '--y-center', type=float, required=True)
parser.add_argument('values', type=float, nargs='*')
args = parser.parse_args()
x(args.x_center, args.y_center, args.values)
if __name__ == '__main__':
main()
Попробуйте:
$ python test.py --x-center 1 --y-center 2 3 4 5
X center: 1.0
Y center: 2.0
Values: [3.0, 4.0, 5.0]
Чтобы использовать модуль argparse
, вы обычно хотите начать с функции main
(и некоторого шаблона, который ее вызывает). В main
вы хотите создать ArgumentParser
. После этого вы захотите добавить некоторые аргументы.
Чтобы добавить аргумент, вы используете add_argument
.
parser.add_argument('-x', '--x-center', type=float, required=True)
Здесь мы добавляем опцию -x
, которая также имеет длинный вариант варианта --x-center
. type
мы переходим к add_argument
, чтобы он требовал, чтобы он был float
(и ошибка, если он не является допустимым поплавком). Мы также говорим argparse
, что это требуется; если он не указан, ошибка.
parser.add_argument('values', type=float, nargs='*')
Это так же, как и раньше, но поскольку строка, которую мы передаем, не начинается с тире, предполагается, что она не является опцией, а скорее аргументом без опций. Опять же, мы говорим, что хотим float
s. nargs
позволяет указать, что для этого требуется несколько аргументов. *
указывает, что мы хотим любое количество аргументов.
Наконец, мы анализируем командную строку с parse_args
. Это возвращает объект, который мы будем хранить.
Затем вы можете получить доступ к параметрам и аргументам этого объекта args
и сделать соответствующие вещи в своей программе.