У меня есть функция:
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 и сделать соответствующие вещи в своей программе.