Как в скрипт python принять параметры
может кто даст коротенький примерчик. что должно быть прописано в скрипте python что бы он принял параметр «из вне».
прочитал что как бы def , опробовал не получилось.
Отслеживать
задан 15 июл 2013 в 6:36
151 3 3 золотых знака 3 3 серебряных знака 11 11 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
sys.argv is a list in Python, which contains the command-line arguments passed to the script.
With the len(sys.argv) function you can count the number of arguments.
If you are gonna work with command line arguments, you probably want to use sys.argv.
To use sys.argv, you will first have to import the sys module.
Отслеживать
ответ дан 15 июл 2013 в 6:42
957 11 11 серебряных знаков 19 19 бронзовых знаков
В стандартной библиотеке питона есть модуль argparse
import argparse parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator') parser.add_argument('--sum', dest='accumulate', action='store_const', const=sum, default=max, help='sum the integers (default: find the max)') args = parser.parse_args() print(args.accumulate(args.integers))
Если пример выше сохранить под именем prog.py и запустить, получим:
$ python prog.py -h usage: prog.py [-h] [--sum] N [N . ] Process some integers. positional arguments: N an integer for the accumulator optional arguments: -h, --help show this help message and exit --sum sum the integers (default: find the max)
Запуск python скрипта с параметрами из bash
Добрейшего дня! Трабл. Есть скрипт ip-up, который отрабатывает при подключении pptp-клиента. Есть скрипт, назову его условно connect, которому передаются параметры от ip-up. Скрипты на bash. Все прекрасно работает. Возникла необходимость переписать bash-скрипт на python3. Скрипт умеет принимать параметры. Проблем тут нет. Проблема возникает когда, я пытаюсь передать параметры от ip-up. То есть connect(bash) принимает параметры, а connect(python) не воспринимает их. Если запускаю вручную в терминале (debian 8):
python3 ./connect.py parametr1 parametr2 parametr3
Все четко. Добавил в код вывод значений передаваемых параметров в файл. Все красиво выводится. Вывод: скрпт работает. Ок! В скрипте ip-up добавляю строку на запуск моего скрипта. Вангую гневные комменты. Да, я знаю, есть папочка ip-up.d. Оттуда скрипты запускаются сами при коннекте. В данном случае не принципиально. На bash скрипт прекрасно запускался и путем прописывания команды на его запуск прямо в ip-up скрипте с параметрами. Дак вот, подшаманил скрипт на питоне, чтобы тот признаки жизни подавал при старте и получается картина такая. Клиент подключается -> стартует ip-up и запускает скрипт python c параметрами-> стартует скрипт python, доходит до места где параметры заносятся в переменные и встает. Повторюсь, ip-up скрипт точно передает параметры. Проверено на другом принимающем их скрипте, но на bash. Python-скрипт понимает параметры. При ручном запуске скрипта, он успешно отрабатывает. Проблема, что автоматически эта конструкция не работает у меня. Есть идеи? Спасибо!
kerby ★
14.08.17 14:50:04 MSK
Как в python передавать аргументы в командной строке?
Рекомендую почитать замечательную статью «Разбор параметров командной строки в Python». Она в свое время расставила для меня все точки над «і» при работе с параметрами скриптов.
Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать
Ответы на вопрос 2
Frontend Developer
import sys var = sys.argv[1]
sys.argv — список аргументов где 0 элемент — название файла со скриптом
Ответ написан более трёх лет назад
Нравится 2 2 комментария
Странно, но var = os.argv[1] — не работает.
У меня только var = sys.argv[1] верно выполнила инструкцию.

Kirill Smirnov, в хотели сказать
import sys var = sys.argv[1]

Сергей П @trapwalker Куратор тега Python
Программист, энтузиаст
Статья в первом ответе, конечно, хорошая, но я бы посоветовал еще взглянуть на стороннюю библиотеку click для этих целей.
pip install click
Очень лаконичный и удобный подход (на мой взгляд) к вопросу.
Передача параметров в скрипт Python из командной строки.
При запуске скриптов, часто требуется указать какие-то дополнительные параметры, которые будут использованы в ходе работы программы. Конечно, можно при помощи функции input() получить данные от пользователя и сохранить их в переменных. Как говорится, дело вкуса. Но вместо множественного вызова функции input() есть намного более элегантное решение. Это передача параметров в скрипт python, непосредственно в командной строке — в момент вызова программы. Как это сделать? Давайте разберемся.
Для начала, наберите небольшую программу в своем редакторе. Сохраните её в папке C:\PyScript под именем input_var.py. Разумеется, папку и файл можете назвать как угодно, но тогда не забудьте указать свои данные при вызове скрипта в командной строке.
1. #-*- coding: UTF-8 -*- 2. from sys import argv 3. 4. script, first, second, third = argv 5. 6. print ("Этот скрипт называется: ", script) 7. print ("Значение первой переменной: ", first) 8. print ("Значение второй переменной: ", second) 9. print ("Значение третьей переменной: ", third)
Как видите, программа очень маленькая. Но её вполне хватит для демонстрации способа передачи данных в скрипт. После того, как следуя приведенным выше инструкциям, вы набрали и сохранили программу, вызовите командную строку Windows. После этого укажите имя интерпретатора python, путь к вызываемому файлу и три значения, разделяя все пробелами, как на рисунке ниже:

Рис. 1 Передача данных в скрипт Python
Если у вас скрипт хранится в другой папке — укажите свой путь к нему. После этого нажмите клавишу Enter на клавиатуре. В результате вы должны увидеть следующее:

Рис. 2 Результат выполнения программы
А теперь давайте разберем, как же это все работает.
Во второй строке мы импортируем argv из модуля sys. Во многих языках переменных argv — стандартное имя. В этой переменной хранятся данных, которые вы передаете сценарию. Пока нам достаточно знать, что эта переменная работает как «контейнер», в котором мы можем передать данные скрипту.
В четвертой строке мы производим «распаковку» содержимого argv в переменные. Слово «распаковка» может показаться странным, но в данном случае оно наиболее подходит. Фактически, мы сообщаем интерпретатору Python, что он должен взять данные из argv и последовательно поместить их в переменные, которые мы указали с левой стороны. После этого мы можем работать с ними как с обычными переменными, которым присвоили значения.
Вы можете указать свои значения вместо «15 два 105», но число значений, которые вы передаете скрипту, должно строго соответствовать количеству переменных, в которые «распаковывается» содержимое argv. Иначе вы увидите сообщение об ошибке:

Рис. 3 Ошибка распаковки данных.
Это сообщение возникло потому что мы передали в скрипт Python недостаточно данных. Если конкретнее, то строка ValueError прямо сообщает, что необходимо 4 значения, но указано 3 (имя скрипта передается автоматически).
Не забывайте, что все данные, которые мы передаем в программу python являются строковыми значениями. Поэтому параметры «10» и «105» сначала необходимо преобразовать в числовой тип при помощи функции int(), а только потом использовать в математических операциях. Будьте внимательны!
