Передать параметры командной строки 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. В качестве разделителя между аргументами используется пробел. Соответственно, значения аргументов, содержащие пробелы, должны быть заключены в кавычки.

Читайте также:  Все элементы внутри блока css

Он хранит аргументы командной строки в списке; мы можем получить к нему доступ, используя 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.

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

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

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

Источник

Передача параметров в скрипт Python из командной строки.

При запуске скриптов, часто требуется указать какие-то дополнительные параметры, которые будут использованы в ходе работы программы. Конечно, можно при помощи функции input() получить данные от пользователя и сохранить их в переменных. Как говорится, дело вкуса. Но вместо множественного вызова функции input() есть намного более элегантное решение. Это передача параметров в скрипт python, непосредственно в командной строке — в момент вызова программы. Как это сделать? Давайте разберемся.

Для начала, наберите небольшую программу в своем редакторе. Сохраните её в папке C:\PyScript под именем input_var.py. Разумеется, папку и файл можете назвать как угодно, но тогда не забудьте указать свои данные при вызове скрипта в командной строке.

1. #-*- coding: UTF-8 -*- 2. from sys import argv 3. 4. script, first, second, third = argv 5. 6. print ("Этот скрипт называется: ", script) 7. print ("Значение первой переменной: ", first) 8. print ("Значение второй переменной: ", second) 9. print ("Значение третьей переменной: ", third)

Как видите, программа очень маленькая. Но её вполне хватит для демонстрации способа передачи данных в скрипт. После того, как следуя приведенным выше инструкциям, вы набрали и сохранили программу, вызовите командную строку Windows. После этого укажите имя интерпретатора python, путь к вызываемому файлу и три значения, разделяя все пробелами, как на рисунке ниже:

Передача данных в скрипт Python

Рис. 1 Передача данных в скрипт Python

Если у вас скрипт хранится в другой папке — укажите свой путь к нему. После этого нажмите клавишу Enter на клавиатуре. В результате вы должны увидеть следующее:

Передача данных в скрипт Python

Рис. 2 Результат выполнения программы

А теперь давайте разберем, как же это все работает.

Во второй строке мы импортируем argv из модуля sys. Во многих языках переменных argv — стандартное имя. В этой переменной хранятся данных, которые вы передаете сценарию. Пока нам достаточно знать, что эта переменная работает как «контейнер», в котором мы можем передать данные скрипту.

В четвертой строке мы производим «распаковку» содержимого argv в переменные. Слово «распаковка» может показаться странным, но в данном случае оно наиболее подходит. Фактически, мы сообщаем интерпретатору Python, что он должен взять данные из argv и последовательно поместить их в переменные, которые мы указали с левой стороны. После этого мы можем работать с ними как с обычными переменными, которым присвоили значения.

Вы можете указать свои значения вместо «15 два 105», но число значений, которые вы передаете скрипту, должно строго соответствовать количеству переменных, в которые «распаковывается» содержимое argv. Иначе вы увидите сообщение об ошибке:

Передача данных в скрипт python

Рис. 3 Ошибка распаковки данных.

Это сообщение возникло потому что мы передали в скрипт Python недостаточно данных. Если конкретнее, то строка ValueError прямо сообщает, что необходимо 4 значения, но указано 3 (имя скрипта передается автоматически).

Не забывайте, что все данные, которые мы передаем в программу python являются строковыми значениями. Поэтому параметры «10» и «105» сначала необходимо преобразовать в числовой тип при помощи функции int(), а только потом использовать в математических операциях. Будьте внимательны!

Источник

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