Я использую python для создания настроек моего проекта, но мне нужна помощь в получении аргументов командной строки.
Я попробовал это на терминале:
$python myfile.py var1 var2 var3
В моем файле Python я хочу использовать все входные переменные.
Я использую python для создания настроек моего проекта, но мне нужна помощь в получении аргументов командной строки.
Я попробовал это на терминале:
$python myfile.py var1 var2 var3
В моем файле Python я хочу использовать все входные переменные.
Ответы:
Учебник по 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)
[1:]
значит?
[1:]
вверх, потому что первый аргумент sys.argv
по умолчанию является именем файла python, который вы запускаете, например testrun.py
.
Я очень рекомендую, argparse
который идет с Python 2.7 и позже.
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
parser.add_argument('var3', nargs='?', type=int, default=3)
var3 - необязательный параметр, если вы не укажете значение в командной строке, вы можете получить доступ к var3 в своем коде, значение по умолчанию для var3 = 3
Если вы называете это так: $ python myfile.py var1 var2 var3
import sys
var1 = sys.argv[1]
var2 = sys.argv[2]
var3 = sys.argv[3]
Подобно массивам у вас также есть, sys.argv[0]
который всегда является текущим рабочим каталогом.
sys.argv[0]
не текущий рабочий каталог. Это имя файла, который выполняется.
Некоторые дополнительные вещи, которые я могу придумать.
Как сказал @allsyed, sys.argv предоставляет список компонентов (включая имя программы), поэтому, если вы хотите узнать количество элементов, передаваемых через командную строку, вы можете использовать len () для его определения. Исходя из этого, вы можете создавать сообщения об исключениях / ошибках, если пользователь не передал определенное количество параметров.
Также, если вы ищете лучший способ обработки аргументов командной строки, я бы посоветовал вам взглянуть на https://docs.python.org/2/howto/argparse.html.