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.

  • Script1.py:
def func1():
    print ("Function 1 is active")

if __name__ == '__main__':
    # Script2.py executed as script
    # do something
    func1()

Выход:

Function 1 is active
  • Script2.py:
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().

Следующий код использует функцию execfile() для запуска сценария Python в другом сценарии Python.

  • Script2.py:
# Python 2 code
execfile("Script1.py")

Выход:

Function 1 is active

То же самое можно сделать в Python 3, используя:

  • Script2.py:
exec(open("Script1.py").read())

Выход:

Function 1 is active

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

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

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

  • Script1.py:
def func1():
    print ("Function 1 is active")

if __name__ == '__main__':
    # Script2.py executed as script
    # do something
    func1()
  • Script2.py:
import subprocess

subprocess.call("Script1.py", shell=True)

Выход:

Function 1 is active

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