Питон запуск другого скрипта

Запуск других программ из Python

Программа на Python может запускать другие программы с помощью функции Popen() (от process open) встроенного модуля subprocess. В качестве аргумента функция принимает имя программы, которую нужно запустить:

>>> import subprocess >>> subprocess.Popen(‘C:\\Windows\\System32\\calc.exe’)

Возвращаемое значение представляет собой объект Popen , имеющий два полезных метода: poll() и wait() .

Метод poll() возвращает значение None , если в момент его вызова процесс все еще выполняется. Если же процесс к этому моменту завершен, то он возвращает код завершения процесса. Код заверешения служит индикатором того, завершился ли процесс без ошибок (код равен нулю) или же его завершение было вызвано ошибкой (ненулевой код).

Метод wait() ожидает завершения запущенного процесса, прежде чем продолжить выполнение основной программы. Возвращаемым значением метода является целочисленный код завершения процесса.

>>> notepad = subprocess.Popen('C:\\Windows\\System32\\notepad.exe') >>> notepad.poll() == None True >>> notepad.poll() == None False >>> notepad.wait() 0 >>> notepad.poll() 0

Сначала мы открываем процесс блокнота, затем проверяем, возвращает ли метод poll() значение None . Это означает, что процесс все еще выполняется. После этого закрываем блокнот и еще раз проверяем, возвращает ли метод poll() значение None . Теперь оба метода, wait() и poll() возвращают нулевое значение, что указывает на завершение программы notepad.exe без ошибок.

Передача аргументов командной строки

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

Читайте также:  Java android context this

>>> subprocess.Popen([‘C:\\Windows\\System32\\notepad.exe’, ‘C:\\example\\readme.txt’])

Здесь мы не только запускаем приложение notepad.exe , но и открываем файл readme.txt .

Открытие файлов программ по умолчанию

Двойной клик на иконке файла с расширением .txt позволяет автоматически запустить приложение, ассоциированное с этим расширением. Функция Popen() также может открывать файлы подобным образом:

>>> subprocess.Popen((‘start’, ‘C:\\example\\readme.txt’), shell = True)

В каждой операционной системе есть программа, выполняющая те же функции, что и двойной клик на иконке файла. В Windows это программа start , в Ubuntu Linux — программа see .

# Таймер обратного отсчета import time, subprocess wait = 10 while wait > 0: print(wait, end='') time.sleep(1) wait = wait - 1 # Воспроизведение звукового файла по завершении обратного отсчета subprocess.Popen(['start', 'C:\\example\alarm.wav'], shell = True)

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

  • 1С:Предприятие (31)
  • API (29)
  • Bash (43)
  • CLI (99)
  • CMS (139)
  • CSS (50)
  • Frontend (75)
  • HTML (66)
  • JavaScript (150)
  • Laravel (72)
  • Linux (146)
  • MySQL (76)
  • PHP (125)
  • React.js (66)
  • SSH (27)
  • Ubuntu (68)
  • Web-разработка (509)
  • WordPress (73)
  • Yii2 (69)
  • БазаДанных (95)
  • Битрикс (66)
  • Блог (29)
  • Верстка (43)
  • ИнтернетМагаз… (84)
  • КаталогТоваров (87)
  • Класс (30)
  • Клиент (27)
  • Ключ (28)
  • Команда (68)
  • Компонент (60)
  • Конфигурация (62)
  • Корзина (32)
  • ЛокальнаяСеть (28)
  • Модуль (34)
  • Навигация (31)
  • Настройка (140)
  • ПанельУправле… (29)
  • Плагин (33)
  • Пользователь (26)
  • Практика (99)
  • Сервер (74)
  • Событие (27)
  • Теория (105)
  • Установка (66)
  • Файл (47)
  • Форма (58)
  • Фреймворк (192)
  • Функция (36)
  • ШаблонСайта (68)

Источник

Python запускает другой скрипт Python

Python запускает другой скрипт Python

  1. Используйте оператор import для запуска сценария Python в другом сценарии Python
  2. Используйте метод execfile() для запуска скрипта Python в другом скрипте Python
  3. Используйте модуль subprocess для запуска скрипта Python в другом скрипте Python

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

Скрипты предназначены для непосредственного выполнения на Python. Научиться запускать сценарии и код — это фундаментальный навык в мире программирования на Python. Скрипт Python обычно имеет расширение ‘.py’ . Если сценарий запускается на машине с Windows, он может иметь расширение .pyw .

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

Используйте оператор import для запуска сценария Python в другом сценарии Python

Оператор import используется для импорта нескольких модулей в код Python. Он используется для получения доступа к определенному коду из модуля. Этот метод использует оператор import для импорта скрипта в код Python и использует его как модуль. Модули можно определить как файл, содержащий определения и инструкции Python.

В следующем коде оператор import используется для запуска сценария Python в другом сценарии Python.

def func1():  print ("Function 1 is active")  if __name__ == '__main__':  # Script2.py executed as script  # do something  func1() 
import Script1.py  def func2():  print("Function 2 is active")  if __name__ == '__main__':  # Script2.py executed as script  # do something  func2()  Script1.func1() 
Function 2 is active Function 1 is active 

Используйте метод execfile() для запуска скрипта Python в другом скрипте Python

Функция execfile() выполняет в интерпретаторе нужный файл. Эта функция работает только в Python 2. В Python 3 функция execfile() была удалена, но то же самое можно сделать в Python 3 с помощью метода exec() .

# Python 2 code execfile("Script1.py") 

Используйте модуль subprocess для запуска скрипта Python в другом скрипте Python

Модуль subprocess может порождать новые процессы, а также может возвращать их выходные данные. Это новый модуль, предназначенный для замены нескольких старых модулей, таких как os.system , которые ранее использовались для запуска сценария Python в другом сценарии Python.

def func1():  print ("Function 1 is active")  if __name__ == '__main__':  # Script2.py executed as script  # do something  func1() 
import subprocess  subprocess.call("Script1.py", shell=True) 

Хотя все три метода работают нормально, этот метод имеет преимущество перед двумя другими методами. В этом методе не требуется редактировать существующий сценарий Python и помещать весь содержащийся в нем код в подпрограмму.

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

Источник

Как запустить скрипт питон из другого скрипта питон?

Как сделать так, что бы из одного скрипта питон запускался другой, с параметрами(a=1 например) и первый скрипт продолжался а после выполнения второй закрывался
нигде не могу найти как это сделать?
Python 3.7

deepblack

Импортируете модуль subprocess

import subprocess subprocess.Popen(['python3', 'script.py', 'argzzz1', 'argzzz2'])

UPD:
Путь к интерпретатору Python3

import sys >>> sys.executable '/usr/bin/python3'

Traceback (most recent call last):
File «tesst.py», line 4, in
subprocess.Popen([‘python3»config.py’],a,b)
File «/usr/local/lib/python3.7/subprocess.py», line 756, in __init__
restore_signals, start_new_session)
File «/usr/local/lib/python3.7/subprocess.py», line 1413, in _execute_child
executable = os.fsencode(executable)
File «/usr/local/lib/python3.7/os.py», line 809, in fsencode
filename = fspath(filename) # Does type-checking of `filename`.
TypeError: expected str, bytes or os.PathLike object, not int
такая ошибка

deepblack

Traceback (most recent call last):
File «tesst.py», line 5, in
subprocess.Popen([‘/usr/local/bin/python3.7′,’config.py’],a,b)
File «/usr/local/lib/python3.7/subprocess.py», line 756, in __init__
restore_signals, start_new_session)
File «/usr/local/lib/python3.7/subprocess.py», line 1413, in _execute_child
executable = os.fsencode(executable)
File «/usr/local/lib/python3.7/os.py», line 809, in fsencode
filename = fspath(filename) # Does type-checking of `filename`.
TypeError: expected str, bytes or os.PathLike object, not int

deepblack

Только что в консоли проверил

[GCC 8.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import subprocess >>> >>> subprocess.Popen(['python3', 'script.py', 'argzzz1', 'argzzz2']) >>> ['script.py', 'argzzz1', 'argzzz2']

Источник

Оцените статью