Как запустить python скрипт с параметрами
Перейти к содержимому

Как запустить python скрипт с параметрами

  • автор:

Как в python передавать аргументы в командной строке?

Рекомендую почитать замечательную статью «Разбор параметров командной строки в Python». Она в свое время расставила для меня все точки над «і» при работе с параметрами скриптов.

Ответ написан более трёх лет назад
Комментировать
Нравится 5 Комментировать
Ответы на вопрос 2
Frontend Developer

import sys var = sys.argv[1]

sys.argv — список аргументов где 0 элемент — название файла со скриптом

Ответ написан более трёх лет назад
Нравится 2 2 комментария

Странно, но var = os.argv[1] — не работает.
У меня только var = sys.argv[1] верно выполнила инструкцию.

Levman5

Kirill Smirnov, в хотели сказать

import sys var = sys.argv[1]

trapwalker

Сергей П @trapwalker Куратор тега Python
Программист, энтузиаст

Статья в первом ответе, конечно, хорошая, но я бы посоветовал еще взглянуть на стороннюю библиотеку click для этих целей.
pip install click
Очень лаконичный и удобный подход (на мой взгляд) к вопросу.

Как запустить скрипт на Python

Начинающий разработчик на Python, помимо синтаксиса и основных правил использования операторов этого языка, должен уметь запускать код на исполнение. Ведь только так можно понять, работает ли написанный вами скрипт, или в нем содержатся ошибки. Рассмотрим подробнее, как можно запустить скрипты в терминале операционной системы, в интегрированной среде разработки или просто из интерфейса ОС. Это позволит вам выбрать подходящий вариант и повысить эффективность своей работы.

Интерпретатор Python

Рассматриваемый язык программирования является одним из самых прогрессивных на текущий момент. Он позволяет быстро и эффективно решать задачи в самых разных областях. Однако под термином Python понимают также интерпретатор, то есть программу на компьютере, которая позволяет запускать на исполнение написанные скрипты. Она представляет собой дополнительный программный слой между аппаратным обеспечением ПК и кодом.

Существует несколько интерпретаторов:

  • написанные на языке программирования С;
  • написанные на языке программирования Java;
  • написанные на языке Python;
  • программы, реализованные в среде .NET.

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

Запуск возможен двумя способами: как готовая к использованию программная последовательность (скрипт или модуль) или как отдельные куски кода, которые вводятся прямо в окно программы.

Интерактивный запуск кода

Для тестирования отдельных команд можно использовать интерпретатор в режиме интерактивного сеанса. Для этого необходимо открыть командную строку операционной системы и ввести команду, которая запускает интерпретатор.

Для ОС Linux это будет выглядеть следующим образом:

$ python3 Python 3.6.7 (default, Oct 22 2018, 11:32:17) [GCC 8.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> 

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

Интерактивное исполнение кода необходимо для того, чтобы немедленно протестировать фрагмент написанного кода. Кроме того, его можно использовать в процессе обучения для проверки действий тех или иных операторов «на лету». Этот способ интерпретации команд позволяет попробовать нужные вам функции языка, не прибегая к написанию отдельных скриптов для этого.

Выйти из интерактивного режима можно с помощью команды quit(), или просто закрыв окно терминала в Windows.

Для открытия терминала или командной строки перед запуском самого интерпретатора необходимо:

  • В Windows нажать комбинацию клавиш «Флажок» + «R», после чего ввести команду cmd и нажать на кнопку «ОК» в диалоговом окне.
  • В Linux или других подобных операционных системах доступ к командной строке предоставляется с помощью дополнительной программы. Можно использовать xterm или Konsole.
  • В macOS для получения доступа к терминалу необходимо выбрать меню «Приложения», после чего перейти в раздел «Утилиты» и кликнуть на элементе «Терминал».

Как работает интерпретатор Python для скриптов

Запуск на исполнение написанных скриптов или модулей производится в пакетном режиме. И выполняется по сложной схеме, которая состоит из следующих этапов:

  1. Последовательная обработка всех операторов, которые записаны в скрипте.
  2. Компиляция исходного хода в промежуточный формат. Интерпретатор создает байт-код, который представляет собой язык программирования низкого уровня, независимый от платформы и операционной системы. Байт-код необходим для оптимизации процесса выполнения скрипта.
  3. Исполнение полученного кода. На этом этапе вступает в действие виртуальная машина Python (PVM), которая циклично перебирает каждый оператор из скрипта и запускает его на исполнение. Как будто вы вводите каждую команду последовательно в интерактивном интерпретаторе.

Запуск скриптов в командной строке

В интерактивном режиме, который обсуждался выше, можно записывать и выполнять любое количество строк кода. Но после закрытия окна терминала они не сохраняются. Поэтому реальные программы на Python пишутся в виде скриптов и представляют собой обычные текстовые файлы. Чтобы избежать путаницы при их хранении, им присваиваются расширения .py или .piw.

Создавать текстовый файл можно с помощью любого редактора, в том числе Notepad. Однако лучше использовать более продвинутые решения, например Sublime Text. Для примера возьмем наиболее простой скрипт, с которого начинается знакомство с любым языком программирования.

#!/usr/bin/env python3 print('Hello World!') 

Файл можно сохранить в вашем рабочем каталоге с любым именем и расширением .py.

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

$ python3 hello.py Hello World! 

В приведенном выше примере файл был назван «hello.py». После ввода команды нужно нажать клавишу «Ввод», и на экране появится результат работы скрипта. То есть надпись «Привет, Мир» или классическое английское «Hello World»!

Если файл с программой сохранен не в каталоге с интерпретатором, нужно указывать путь к нему.

Переназначение устройства вывода информации

При исполнении программного кода на Python иногда необходимо сохранять результаты, которые отображает на экране программа. Они в дальнейшем анализируются для поиска ошибок или других целей. В этом случае скрипт необходимо запускать следующей командой:

$ python3 hello.py > output.txt 

По результатам работы скрипта создается файл с именем output.txt, в который сохраняется все то, что должно было появиться на экране во время работы в программе. Это стандартный синтаксис, предусмотренный операционной системой.

Если файла с заданным именем не существует, ОС создает его автоматически. Если существует – данные в нем перезаписываются без сохранения предыдущих. В случае, когда есть необходимость в добавлении данных в конец текстового файла, вместо одного значка > необходимо указать два >>.

Запуск из командной строки без интерпретатора

В последних версиях операционной системы Windows добавлена возможность запускать скрипты на Python без ввода в командной строке названия программы-интерпретатора. То есть необходимо просто написать название файла с расширением.

C:\devspace> hello.py Hello World! 

Обусловлено это тем, что при клике на файле или запуске его из командной строки операционная система автоматически ищет связанное приложение и запускает его. Точно так же вы открываете файлы Word, просто кликнув на них курсором мыши.

В Unix таким образом тоже можно запускать скрипты. Однако для этого в первую строку текстового файла с командами необходимо добавить текст #!/Usr/bin/env python. Он указывает на программу, с помощью которой производится запуск. А интерпретатор языка программирования расценивает строку как комментарий и пропускает её.

Запуск скриптов из интерактивного режима

Находясь в интерактивном режиме (описан в первом разделе), пользователь может загрузить файл с написанной ранее последовательностью команд и запустить его на исполнение. Такой способ можно применять, когда модуль содержит вызовы функций, методов или других операторов, генерирующих текст на экране. В противном случае видимых результатов работы программы не будет.

Запустить скрипт из интерактивного режима можно командой:

>>> import hello Hello World! 

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

Заключение

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

© Copyright 2014 — 2024 mkdev | Privacy Policy

Как в скрипт 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

При запуске, интерпретатор CPython сканирует командную строку и переменную среду с целью настройки параметров выполнения скрипта.

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

При вызове Python можно указать любой из следующих параметров:

$ python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args] 

Напишем и сохраним в файл test.py небольшую программку, которую будем запускать разными способами.

#!/usr/bin/env python3 def hello(text): print(f'Функция "text>"') print('Привет Мир') if __name__ == '__main__': hello('hello') 

Самым распространенным вариантом использования, конечно, является простой вызов скрипта:

$ python3 test.py # Привет Мир # Функция "hello" 

Содержание:

  • Перенаправление вывода программы;
  • Запуск скрипта как модуля с параметром -m ;
  • Запуск скрипта в интерактивном режиме с параметром -i ;
  • Использование имени файла скрипта;
  • Запуск скрипта при выполнении импорта;
  • Использование модуля importlib ;
  • Использование модуля runpy ;
  • Использование функции exec() .

Перенаправление вывода программы.

Иногда бывает полезно сохранить вывод скрипта для последующего анализа. Вот как это сделать:

$ python3 test.py > output.txt

Эта операция сохраняет вывод скрипта в файл output.txt , а не в стандартный системный вывод stdout . В результате на экран попадёт только поток ошибок stderr (в случае их появления). Этот процесс широко известен как перенаправление потока и доступен как в Windows, так и в Unix-подобных системах. Если output.txt не существует, он создается автоматически, если файл уже существует, то его содержимое будет заменено новым выводом.

Что-бы накапливать/добавлять вывод последовательных исполнений скрипта в конец файла output.txt , то нужно использовать две угловые скобки >> вместо одной:

$ python3 test.py >> output.txt

Ну и наконец перенаправление в файл только вывода ошибок (в случае их появления). Для этого достаточно перенаправить стандартный поток ошибок, используя команду 2> (2 — это дескриптор стандартного потока ошибок). В результате на экран попадёт только то, что команда отправляет в стандартный вывод:

$ python3 test.py 2> error.txt

Если необходимо перенаправить в файл вывод всего того, что появляется в консоли при выполнения скрипта ( stdout и stderr ), и при этом накапливать вывод в файле, то запуск сценария должен выглядеть следующим образом:

$ python3 test.py >> output.log 2>&1 # или проще $ python3 test.py &>> output.log

Как быть, если нужно сохранить результаты работы сценария Python в отдельный файл, не смешивая данные со сведениями об ошибках? Так как потоки можно перенаправлять независимо друг от друга, то можно добавить в команду запуска сценария перенаправления стандартного потока вывода в один файл, а ошибок в другой файл:

$ python3 test.py > output.txt 2> error.txt # с добавлением результатов сценария # в `output.txt` и перезаписью `error.txt` $ python3 test.py >> output.txt 2> error.txt

Запуск скрипта как модуля с параметром -m .

Python предлагает ряд параметров командной строки, которые можно использовать в соответствии со своими потребностями. Например, если нужно запустить модуль Python, то необходимо использовать команду python -m .

Опция -m ищет в sys.path имя модуля и запускает его содержимое как __main__ :

$ python3 -m test # Привет Мир # Функция "hello" 

Примечание: имя модуля должно быть именем объекта модуля, а не просто строкой.

Запуск скрипта в интерактивном режиме с параметром -i .

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

$ python3 -i test.py # Привет Мир # Функция "hello" # здесь можно запустить любую # функцию с другими аргументами >>> hello('печатает слово Привет!') # Функция "печатает слово Привет!" 

Использование имени файла скрипта

В последних версиях Windows можно запускать сценарии Python, просто введя имя файла, содержащего код, в командной строке:

C:\> test.py # Привет Мир # Функция "hello" 

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

В Unix-подобных системах, таких как GNU/Linux, можно добиться такого поведения добавив первую строку с текстом #!/usr/bin/env python3 . Для Python это простой комментарий, а для операционной системы эта строка указывает, какую программу необходимо использовать для запуска файла.

Эта строка начинается с комбинация символов #! , которая обычно называется «хеш-банг» или «шебанг«, и указывает путь к интерпретатору.

Есть два способа указать путь к интерпретатору:

  • абсолютный путь к интерпретатору: #!/usr/bin/python3 .
  • использование команды env операционной системы, которая находит и запускает Python путем поиска в переменной окружения PATH : #!/usr/bin/env python3 .

И наконец, чтобы выполнить скрипт в Linux, необходимо назначить ему права на выполнение.

Вот пример того, как это сделать:

# Даем права на выполнение $ chmod +x test.py # Запускаем скрипт, используя его имя файла $ ./test.py # Привет Мир # Функция "hello" 

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

Запуска скриптов из интерактивного сеанса.

Также можно запускать сценарии и модули Python из интерактивного сеанса. Этот вариант предлагает множество возможностей.

Запуск скрипта при выполнении импорта.

В момент импорта модуля происходит загрузка его содержимого для последующего доступа и использования. Самое интересное в этом процессе то, что на последнем этапе import запускает код.

Когда модуль содержит только определения классов, функций, переменных и констант, то не будет видно, что код действительно выполнялся, но когда модуль включает в себя вызовы функций, методов или других инструкций, которые генерируют видимые результаты и расположенные вне сценария верхнего уровня ‘__main__’ , тогда станете свидетелем его исполнения.

>>> import test # Привет Мир # вызов функции `hello()` >>> test.hello('запускается как test.hello()') # Функция "запускается как test.hello()" # выполним импорт только функции `hello()` >>> from test import hello >>> hello('запускается как hello()') # Функция "запускается как hello()" 

Необходимо отметить, что код, который выполняется вне сценария верхнего уровня ‘__main__’ — работает только один раз за сеанс. После первого импорта последующие импорты ничего не делают, даже если изменить содержимое модуля. Это связано с тем, что операции импорта являются дорогостоящими и поэтому выполняются только один раз.

Использование модуля importlib .

Стандартная библиотеке Python содержит модуль importlib , который предоставляет функцию importlib.reload() . С помощью этой функции можно заставить интерпретатор повторно импортировать модуль и, следовательно, выполнить код модуля заново.

Обратите внимание, что аргумент importlib.reload() должен быть именем объекта модуля, а не строкой!

# пробуем импортировать еще раз import test # ничего не происходит >>> import importlib >>> importlib.reload(test) # Привет Мир #  

Функция importlib.reload() также будет полезна, если вы отредактировали исходный файл модуля с помощью внешнего редактора и хотите опробовать новую версию, не выходя из интерпретатора Python.

Использование модуля runpy .

Стандартная библиотека включает модуль runpy , которая имеет функцию runpy.run_module() , позволяющая запускать модули без их предварительного импорта. Эта функция возвращает словарь глобальных переменных исполняемого модуля.

>>> import runpy >>> runpy.run_module(mod_name='test') # Привет Мир #  # . вывод сокращен . # 'hello': > 

Запускаемый модуль ищется с использованием стандартного механизма импорта, а затем выполняется в новом пространстве имен модулей. Первым аргументом runpy.run_module() должна быть строка с абсолютным именем выполняемого модуля без расширения .py .

Модуль runpy также предоставляет функцию runpy.run_path() , которая позволит запустить модуль, указав его расположение в файловой системе:

>>> import runpy >>> runpy.run_path(path_name='test.py') # Привет Мир #  # . вывод сокращен . # 'hello': > 

Как и runpy.run_module() , так и runpy.run_path() возвращает глобальный словарь исполняемого модуля.

Аргумент path_name должен быть строкой и может ссылаться на следующее:

  • Расположение исходного файла Python
  • Расположение скомпилированного файла байт-кода
  • Значение допустимой записи в sys.path , содержащей модуль __main__ (файл __main__.py )

Использование функции exec() .

Встроенная функция exec() поддерживает динамическое выполнение кода Python, тем самым предоставляет альтернативный способ запуска скриптов:

exec(open('test.py').read()) # Привет Мир # Функция "hello" 

Здесь функция open() открывает файл test.py , считывает его содержимое и отправляет в функцию exec() , которая, в свою очередь, запускает код.

Приведенный выше пример немного не соответствует действительности. Это просто «ХАК«, который показывает, насколько может быть Python универсальным и гибким.

  • КРАТКИЙ ОБЗОР МАТЕРИАЛА.
  • Режимы интерфейса интерпретатора Python
  • Общие параметры/флаги командной строки Python
  • Переменные среды окружения Python
  • Поддержка Python Linux perf profiler

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *