Как получить доступ к аргументам командной строки?
Проблема: Как обработать аргументы командной строки в Python
Я использую Python для настройки конфигурации моего проекта, но у меня возникла проблема с получением аргументов командной строки.
Я попробовал выполнить следующую команду в терминале:
$ python myfile.py var1 var2 var3
В своем Python файле я хочу использовать все переменные, которые были переданы в качестве аргументов.
Как мне правильно обработать эти аргументы и использовать их в коде?
5 ответ(ов)
Вы можете перевести предоставленный код на Python и его использование на русский, как это делается на StackOverflow, следующим образом:
Вопрос:
Как передать аргументы командной строки в Python и вывести их на экран?
Ответ:
Вы можете использовать модуль sys
для работы с аргументами командной строки в Python. Вот пример кода, который принимает три параметра и выводит их на экран:
import sys
# Основная часть программы
param_1 = sys.argv[1]
param_2 = sys.argv[2]
param_3 = sys.argv[3]
print('Params=', param_1, param_2, param_3)
Вы можете запустить этот скрипт в терминале следующим образом:
$ python myfile.py var1 var2 var3
Ожидаемый вывод будет:
Params= var1 var2 var3
Обратите внимание, что для вывода в Python 3.x нужно использовать print()
с круглыми скобками, как в приведённом примере.
Не забудьте, что sys.argv[0]
— это имя самого скрипта, поэтому параметры начинаются с sys.argv[1]
.
Если вы вызываете скрипт так: $ python myfile.py var1 var2 var3
, то в вашем коде:
import sys
var1 = sys.argv[1]
var2 = sys.argv[2]
var3 = sys.argv[3]
переменные var1
, var2
и var3
будут содержать значения var1
, var2
и var3
, которые вы передали в командной строке соответственно.
Также стоит отметить, что sys.argv[0]
всегда содержит имя скрипта, с помощью которого вы запускаете программу, а не текущую рабочую директорию. Таким образом, sys.argv
представляет собой список, где:
sys.argv[0]
— это имя файла скрипта (myfile.py
в вашем примере),sys.argv[1]
— это первый аргумент (var1
),sys.argv[2]
— это второй аргумент (var2
),sys.argv[3]
— это третий аргумент (var3
).
Если нужно получить путь к текущему рабочему каталогу, используйте модуль os
, например, os.getcwd()
.
Если вы используете следующий код, вы сможете проверить, были ли введены аргументы командной строки. Если аргументы есть, они будут напечатаны; в противном случае будет выведено сообщение о том, что аргументы не были введены.
import sys
if len(sys.argv) <= 1:
print("Не введены аргументы")
else:
for arg in sys.argv:
print(arg)
В данном коде мы проверяем длину списка sys.argv
, который содержит аргументы командной строки, переданные вашему скрипту. Если длина этого списка меньше или равна 1, мы выводим сообщение о том, что аргументы не были введены. В противном случае мы проходим по всем аргуементам и выводим их на экран.
Вы можете использовать sys.argv
, чтобы получить аргументы командной строки в виде списка.
Если вам нужно получить доступ к отдельным элементам, вы можете использовать
sys.argv[i]
где i
— это индекс. Индекс 0
вернёт имя выполняемого файла Python. Все последующие индексы будут соответствовать переданным аргументам.
Вы можете получить доступ к аргументам по ключу, используя библиотеку argparse
.
Допустим, у нас есть следующая команда:
python main.py --product_id 1001028
Чтобы получить аргумент product_id
, нам сначала нужно его объявить, а затем извлечь:
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--product_id', dest='product_id', type=str, help='Укажите product_id')
args = parser.parse_args()
print(args.product_id)
Результат выполнения будет следующим:
1001028
Таким образом, вы сможете легко получать значения аргументов командной строки.
Как изменить цвет вывода echo в Linux
Парсинг булевых значений с помощью argparse
"Как использовать необязательные позиционные аргументы в Argparse?"
Ввод данных пользователем и аргументы командной строки [закрыто]
Преобразование списка словарей в DataFrame pandas