Аргументы командной строки
Contents
Аргументы командной строки#
Чтобы сделать из скрипта целостную программу, которую смогут запускать другие пользователи или другие программы необходимо предоставить интерфейс для её использования API. Один из видов API
— интерфейс для командной строки. В качестве примера программы с таким интерфейсом можно привести компиляторы, а также интерпретатор CPython
.
sys.argv#
Рассмотрим скрипт myscript.py
с следующим содержимым
import sys
print(sys.argv)
Обычный запуск скрипта будет выглядеть как-то так
>>> python myscript.py
['myscript.py']
>>>
Но можно передать аргументы скрипту при его запуске, указывая их после имени скрипта
>>> python python myscript.py arg1 arg2 arg3
['myscript.py', 'arg1', 'arg2', 'arg3']
>>>
На первом месте всегда идёт имя скрипта, а далее аргументы командной строки. Далее можно выстроить логику программу таким образом, чтобы учитывать значения переданных параметров. Обычно для этого используют модуль стандартной библиотеки argparse.
argparse#
Рассмотрим базовые возможности модуля argparse.
Предположим файл myscript.py
имеет следующее содержимое.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--config', default='default_config.json', help='Путь к конфигурационному файлу')
parser.add_argument('-o', required=True, help='Папка для записи результатов вычисления')
parser.add_argument('-n', type=int, default=100, help='Количество разбиений по оси времени')
args = parser.parse_args()
print(args)
Объявлено три ожидаемых аргумента
путь к конфигурационному файлу по ключу
--config
с значением по умолчанию;название папки (ключ
-o
), в которую следует записать результаты всех вычислений. Т.к. важно не перезаписывать предыдущие результаты, то этот аргумент сделаем обязательным;количество разбиений по оси
t
, которое необходимо использовать для расчетов. Явно укажем здесь, что ожидается целое число.
Для каждого параметра указана справочная информация, которую можно теперь получить следующим образом.
>>> python myscript.py --help
usage: myscript.py [-h] [--config CONFIG] -o O [-n N]
optional arguments:
-h, --help show this help message and exit
--config CONFIG Путь к конфигурационному файлу
-o O Папка для записи результатов вычисления
-n N Количество разбиений по времени
А запустить скрипт можно, передавая ему разные значения.
>>> python myscript.py --config config.json -o somefolder -n 300
Namespace(config='config.json', n=300, o='somefolder')
>>> python myscript.py --config config.json -o somefolder
Namespace(config='config.json', n=100, o='somefolder')
>>> python myscript.py
usage: myscript.py [-h] [--config CONFIG] -o O [-n N]
myscript.py: error: the following arguments are required: -o
>>>