Вы можете сделать что-то вроде этого:
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
с. nargs
позволяет указать, что требуется более одного аргумента. *
указывает, что мы хотим любое количество аргументов.
Наконец, мы анализируем командную строку с parse_args
. Это возвращает объект, который мы будем хранить.
Затем вы можете получить доступ к опциям и аргументам этого args
объекта и делать соответствующие вещи в вашей программе.