7

Как получить доступ к аргументам командной строки?

1

Проблема: Как обработать аргументы командной строки в Python

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

Я попробовал выполнить следующую команду в терминале:

$ python myfile.py var1 var2 var3

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

Как мне правильно обработать эти аргументы и использовать их в коде?

5 ответ(ов)

1

Вы можете перевести предоставленный код на 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].

0

Если вы вызываете скрипт так: $ 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().

0

Если вы используете следующий код, вы сможете проверить, были ли введены аргументы командной строки. Если аргументы есть, они будут напечатаны; в противном случае будет выведено сообщение о том, что аргументы не были введены.

import sys

if len(sys.argv) <= 1:
   print("Не введены аргументы")
else:
   for arg in sys.argv:
      print(arg)

В данном коде мы проверяем длину списка sys.argv, который содержит аргументы командной строки, переданные вашему скрипту. Если длина этого списка меньше или равна 1, мы выводим сообщение о том, что аргументы не были введены. В противном случае мы проходим по всем аргуементам и выводим их на экран.

0

Вы можете использовать sys.argv, чтобы получить аргументы командной строки в виде списка.

Если вам нужно получить доступ к отдельным элементам, вы можете использовать

sys.argv[i]

где i — это индекс. Индекс 0 вернёт имя выполняемого файла Python. Все последующие индексы будут соответствовать переданным аргументам.

0

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

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

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь