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

Я использую python для создания моей настройки параметров проекта, но мне нужна помощь в получении аргументов командной строки.

Я пробовал это на терминале:

$python myfile.py var1 var2 var3

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

Ответ 1

Учебник Python объясняет это:

import sys

print(sys.argv)

В частности, если вы запустите python example.py one two three:

>>> import sys
>>> print(sys.argv)
['example.py', 'one', 'two', 'three']

Ответ 2

import sys

sys.argv[1:]

предоставит вам список аргументов (не включая имя файла python)

Ответ 3

Я настоятельно рекомендую argparse который поставляется с Python 2.7 и более поздними argparse.

Модуль argparse уменьшает код котельной пластины и делает ваш код более надежным, потому что модуль обрабатывает все стандартные варианты использования (включая подкоманды), генерирует помощь и использование для вас, проверяет и дезинфицирует вводимые пользователем данные - все, о чем вам следует беспокоиться, когда Вы используете подход sys.argv. И это бесплатно (встроенный).

Вот небольшой пример:

import argparse

parser = argparse.ArgumentParser("simple_example")
parser.add_argument("counter", help="An integer will be increased by 1 and printed.", type=int)
args = parser.parse_args()
print(args.counter + 1)

и вывод для python prog.py -h

usage: simple_example [-h] counter

positional arguments:
  counter     counter will be increased by 1 and printed.

optional arguments:
  -h, --help  show this help message and exit

и для python prog.py 1 как и следовало ожидать:

2

Ответ 4

Код Python:

import sys

# main
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 

Ответ 5

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

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

sys.argv[i]  

где i - индекс, 0 даст вам исполняемое имя файла python. Любой индекс после этого - переданные аргументы.

Ответ 6

Если вы вызываете это так: $ python myfile.py var1 var2 var3

import sys

var1 = sys.argv[1]
var2 = sys.argv[2]
var3 = sys.argv[3]

Подобно массивам, вы также имеете sys.argv[0], который всегда является текущим рабочим каталогом.

Ответ 7

Некоторые дополнительные вещи, о которых я могу думать.

Поскольку @allsyed говорит, что sys.argv предоставляет список компонентов (включая имя программы), поэтому, если вы хотите узнать количество элементов, переданных через командную строку, вы можете использовать len() для его определения. Исходя из этого, вы можете создавать сообщения об ошибках/ошибках, если пользователь не передал определенное количество параметров.

Также, если вы ищете лучший способ обработки аргументов командной строки, я бы предложил вам посмотреть https://docs.python.org/2/howto/argparse.html