Синтаксис командной строки python

Аргументы командной строки Python

Python поддерживает программы, которые можно запускать из командной строки, в комплекте с аргументами командной строки. Это входной параметр, который необходимо передать скрипту при их выполнении, означает взаимодействие с интерфейсом командной строки для сценариев.

Предоставляемый модуль getopt, может анализировать параметры и аргументы командной строки Python.

Как происходит передача аргументов командной строки Python?

Команда ls часто используется для получения сводной информации о файлах и папках, находящихся в определенном каталоге.

Зачем использовать argparse?

Для общения между автором программы и пользователем, которое не требует углубления в код и внесения изменений в сценарий. Модуль предоставляет пользователю возможность вводить аргументы командной строки.

Доступ к аргументам командной строки

Модуль Python sys предоставляет доступ к аргументам командной строки через sys.argv. Он решает две задачи:

Модуль Python sys

Это базовый модуль, который с самого начала поставлялся с дистрибутивом Python. Это тот же подход, что и библиотека C, использующая argc / argv для доступа к аргументам. Модуль sys реализует аргументы командной строки в простой структуре списка с именем sys.argv.

Каждый элемент списка представляет собой единственный аргумент. Первый – sys.argv [0] – это имя скрипта Python. Другие элементы списка от sys.argv [1] до sys.argv [n] – аргументы командной строки от 2 до n. В качестве разделителя между аргументами используется пробел. Соответственно, значения аргументов, содержащие пробелы, должны быть заключены в кавычки.

Он хранит аргументы командной строки в списке; мы можем получить к нему доступ, используя sys.argv. Это очень полезный и простой способ читать аргументы командной строки как String.

import sys print(type(sys.argv)) print('The command line arguments are:') for i in sys.argv: print(i)

Модуль Python getopt

Модуль Python getopt расширяет разделение входной строки проверкой параметров. Основанный на функции getopt C, он позволяет использовать как короткие, так и длинные варианты, включая присвоение значений.

Очень похож на функцию C getopt() для анализа параметров командной строки. Полезен при анализе аргументов командной строки, когда мы хотим, чтобы пользователь ввел некоторые параметры.

import getopt import sys argv = sys.argv[1:] try: opts, args = getopt.getopt(argv, 'hm:d', ['help', 'my_file=']) print(opts) print(args) except getopt.GetoptError: # Print a message or do something useful print('Something went wrong!') sys.exit(2)

Модуль Python argparse

Предлагает интерфейс командной строки со стандартизованным выводом, тогда как первые два решения оставляют большую часть работы в ваших руках. argparse позволяет проверять фиксированные и необязательные аргументы с проверкой имени в стиле UNIX или GNU.

Читайте также:  Виртуальная машина java служба

Это предпочтительный способ анализа аргументов командной строки. Он предоставляет множество опций, таких как позиционные аргументы, значение по умолчанию для аргументов, справочное сообщение, указание типа данных аргумента и т. д.

Упрощает написание удобных интерфейсов командной строки. Он автоматически генерирует справочные сообщения и сообщения об использовании и выдает ошибки, когда пользователь передает программе неверные аргументы.

getopt.getopt метод

Этот метод используется для анализа параметров командной строки и списка параметров.

getopt.getopt(args, options, [long_options])

args – это список аргументов, который необходимо проанализировать.

options – строка букв опций, которую сценарий хочет распознать, с опциями, требующими аргумента, за которым следует двоеточие (:).

long_options (по желанию) – это должна быть строка с именами длинных параметров, которые должны поддерживаться.

  • Этот метод возвращает значение, состоящее из двух элементов, т.е. список пар (параметр, значение), список аргументов программы, оставшихся после удаления списка параметров.
  • Каждая пара опция-значение возвращается как опция в качестве ее первого элемента с префиксом дефиса для коротких опций (например, ‘- x’) или двумя дефисами для длинных опций (например, ‘–long-option’).

Исключение getopt.GetoptError

Это исключение возникает, когда в списке аргументов обнаруживается нераспознанный параметр или когда какой-либо опции, требующей аргумента, не дается ничего.

Аргументом исключения является строка, указывающая причину ошибки. Атрибуты msg и opt дают сообщение об ошибке и соответствующий параметр.

#!/usr/bin/python import sys, getopt def main(argv): inputfile = '' outputfile = '' try: opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="]) except getopt.GetoptError: print 'test.py -i -o ' sys.exit(2) for opt, arg in opts: if opt == '-h': print 'test.py -i -o ' sys.exit() elif opt in ("-i", "--ifile"): inputfile = arg elif opt in ("-o", "--ofile"): outputfile = arg print 'Input file is "', inputfile print 'Output file is "', outputfile if __name__ == "__main__": main(sys.argv[1:])
$ test.py -h $ test.py -h usage: test.py -i -o $ test.py -i BMP -o usage: test.py -i -o $ test.py -i inputfile Input file is " inputfile Output file is "

Как использовать?

Модуль Применение Версия Python
sys Все аргументы в sys.argv (базовый) Все
argparse Создать интерфейс командной строки > = 2.3
docopt Создать интерфейсы командной строки > = 2,5
fire Автоматически создавать интерфейсы командной строки (CLI) Все
optparse Устарело

Docopt используется для создания интерфейсов командной строки.

from docopt import docopt if __name__ == '__main__': arguments = docopt(__doc__, version='Example 1') print(arguments)

Python Fire автоматически генерирует интерфейс командной строки; вам нужна только одна строка кода. В отличие от других модулей, работает мгновенно. Не нужно определять никаких аргументов; все методы связаны по умолчанию.

Чтобы установить его, введите:

Определите или используйте класс:

import fire class Python(object): def hello(self): print("Hello") def openfile(self, filename): print("Open file '" + filename + "'") if __name__ == '__main__': fire.Fire(Python)

У вас есть варианты, соответствующие методам класса:

python example.py hello python example.py openfile filename.txt

Источник

Оцените статью