Аргументы командной строки. Что они на самом деле? Зачем вам их использовать?
Аргументы командной строки-это способ уменьшения жестких переменных в программе. В этом случае, если ваша программа время от времени принимает пользовательский ввод и делает что -то с ней, вы можете избежать необходимости, например, призыв:
Enter your first name: Enter your second name:
Вместо этого вы можете просто запустить программу;
python user_name.py John Doe
Здесь программа идентифицирует имя как Джон
и второй как Доу
Без необходимости неявно записать два входных оператора в вашем коде, назначьте их переменным, а затем распечатать их обратно. Вы сделали работу намного проще. Легкая пицца, верно? В Python аргументы командной строки обрабатываются следующими способами.
- Аргв
- Аргарс
- getopt
Чтобы начать, давайте начать с использования Аргв
. Для этой иллюстрации мы будем писать простую программу, которая берет номер и возвращает квадрат. Теперь это не что -то крутое?
Мы начнем с написания программы как та, которая обычно имела бы:
# square_numbers.py #program that allows the user to enter a number and print the square. def main(number): """Return the square of the number """ return number* number number = int(input("Enter a number to square:")) print(main(number))
Теперь, чтобы получить результат, у вас обычно будет что-то подобное в командной линии
python square_numbers.py
Затем вы получите подсказку:
Enter a number to square:
Где вам будет разрешено ввести номер и вернуть квадрат этого числа. Сравните это с программой Python, которая использует аргументы командной строки.
# square.py # get the square of numbers using command_line_arguments def main(number): """Return the square of the number """ return number* number #convert the argument to an integer since it is read as a string. number = int(sys.argv[1]) print(main(number))
Чтобы получить результат от этого:
python square.py 5
Курс результатом будет 25
! Обратите внимание, однако, как мы получаем значение 5 от командной строки. В программе мы импортируем Sys
, Модуль короткая форма для системных параметров и функций. Затем мы используем его в сочетании с Аргв
. Почему? Просто потому, что как модуль, Sys
имеет много бочек под его поясом. Мы просто указываем, что из этого колодца, которые у вас есть, мы хотим доступ к аргументам командной строки и, таким образом, так называемые argv
, в буквальном смысле.
Вот улов, sys.argv
читает элементы как список. Что это значит? Это значит все после слова Python
это элемент в списке «виртуальные». Итак, наш список выглядит так:
[ 'square' , '5' ]
Это пролит некоторый свет на то, почему у нас есть sys.argv [1]
Чтобы получить второй элемент в списке. Помните, если вы не R
Программист, который справляется с 1, подсчет начинается с 0 (ноль). Я точно знаю? R программисты
так странно. Харрисон, если вы читаете это, не удаляйте мою учетную запись в Твиттере.
Фото Чарльза на Unsplash (это может быть Харрисон, но никто никогда не узнает)
В любом случае, где мы были? О, верно, Получение значений из терминала.
Поэтому, если бы мы прошли в большие значения, это увеличило бы продолжительность нашего списка. Давайте возьмем пример, скажем, программу, которая занимает два числа и добавляет их.
# add.py # get the sum of two numbers import sys def main(first_number, second_number): """Return the SUM of the number """ return first_number + second_number first_number = int(sys.argv[1]) second_number = int(sys.argv[2]) print(main(first_number, second_number))
На этот раз, если мы напишем Python add.py 5 6
, мы получим результат 11, First_number
Быть 5
В то время как второй, 6
Анкет Мы сделали это! Самая простая программа в мире, кроме, ну, в общем, Привет, мир
но с изюминкой. Эта краткая статья должна дать вам отличную основу для создания тонны отличных программ. Просто пройдите в переменную, абсолютно все; URL, путь к файлу, вы назовите его. При условии, что ваша программа прочитает и использует ее.
Мы сделаем шаг глубже в использовании аргументов командной строки в следующей статье, сравнивая еще один способ сделать это и его различия с тем, через что мы только что прошли. Нужно пройти через файлы? Взгляните на репозиторий из Гриноды
Оригинал: “https://dev.to/marvinkweyu/command-line-arguments-part-1-327m”