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



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



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



$python myfile.py var1 var2 var3


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

446   7  

7 ответов:

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

import sys

print(sys.argv)

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

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

sys.argv[1:]

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

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 

рекомендую argparse, которая поставляется с Python 2.7 и выше.

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

здесь пример:

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

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

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

sys.argv[i]  

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

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

import sys

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

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

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

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

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

Comments

    Ничего не найдено.