Содержание

Работа с аргументами командной строки

import sys

print(sys.argv)
python3 test.py a 24 --test "long arg"
['test.py', 'a', '24', '--test', 'long arg']

Пара слов о традициях обработки аргументов

-o file.txt
--output-file file.txt
-v
--verbose
python3 script.py -v -o file.txt Arg1 Arg2

Работа с модулем argparse

Для разбора аргументов командной строки в стандартной библиотеке есть модуль argparse.

Описание аргументов

import argparse

parser = argparse.ArgumentParser()

parser.add_argument("-v", "--verbose", action="store_true",
                    default=False, help="Подробный вывод")

parser.add_argument("-i", "--input", action="store", required=True,
                    help="Входной файл (обязательный аргумент)")

parser.add_argument("-o", "--output", action="store", default="out.dat",
                    help="Выходной файл (по умолчанию out.dat)")

parser.add_argument('var', type=int,
                    help='Первый обязательный аргумент')

parser.add_argument('livar', nargs='+',
                    help='Один или более обязательных аргументов')

args = parser.parse_args()

Автоматическая генерация справки

> python3 test.py 
usage: test.py [-h] [-v] -i INPUT [-o OUTPUT] var livar [livar ...]
test.py: error: the following arguments are required: -i/--input, var, livar

> python3 test.py -h
usage: test.py [-h] [-v] -i INPUT [-o OUTPUT] var livar [livar ...]

positional arguments:
  var                   Первый обязательный аргумент
  livar                 Один или более обязательных аргументов

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         Подробный вывод
  -i INPUT, --input INPUT
                        Входной файл (обязательный аргумент)
  -o OUTPUT, --output OUTPUT
                        Выходной файл (по умолчанию out.dat)

Результат работы

print(args)
print(args.verbose)
print(args.input)
print(args.output)
print(args.var)
print(args.livar)
> python3 test.py -i input.txt -o output.dat -v 43 a b c
Namespace(input='input.txt', livar=['a', 'b', 'c'], output='output.dat', var=43, verbose=True)
True
input.txt
output.dat
43
['a', 'b', 'c']

Что еще нужно знать об аргументах