Python ejecutar otro script de Python

Vaibhhav Khetarpal 30 enero 2023
  1. Utilice la instrucción import para ejecutar un script de Python en otro script de Python
  2. Utilice el método execfile() para ejecutar una secuencia de comandos de Python en otra secuencia de comandos de Python
  3. Utilice el módulo subprocess para ejecutar una secuencia de comandos de Python en otra secuencia de comandos de Python
Python ejecutar otro script de Python

Un archivo de texto básico que contiene código Python que está destinado a ser ejecutado directamente por el cliente generalmente se denomina script, formalmente conocido como archivo de programa de nivel superior.

Los scripts están destinados a ejecutarse directamente en Python. Aprender a ejecutar scripts y código es una habilidad fundamental para aprender en el mundo de la programación de Python. El script de Python normalmente tiene la extensión '.py'. Si el script se ejecuta en una máquina con Windows, podría tener una extensión, .pyw.

Este tutorial discutirá diferentes métodos para ejecutar una secuencia de comandos de Python dentro de otra secuencia de comandos de Python.

Utilice la instrucción import para ejecutar un script de Python en otro script de Python

La declaración import se utiliza para importar varios módulos al código Python. Se utiliza para obtener acceso a un código en particular desde un módulo. Este método usa la declaración import para importar el script en el código Python y lo usa como módulo. Los módulos se pueden definir como un archivo que contiene definiciones y declaraciones de Python.

El siguiente código utiliza la declaración import para ejecutar un script de Python en otro script de Python.

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


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

Producción :

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()

Producción :

Function 2 is active
Function 1 is active

Utilice el método execfile() para ejecutar una secuencia de comandos de Python en otra secuencia de comandos de Python

La función execfile() ejecuta el archivo deseado en el intérprete. Esta función solo funciona en Python 2. En Python 3, se eliminó la función execfile(), pero se puede lograr lo mismo en Python 3 usando el método exec().

El siguiente código usa la función execfile() para ejecutar un script de Python en otro script de Python.

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

Producción :

Function 1 is active

Lo mismo se puede hacer en Python 3 usando:

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

Producción :

Function 1 is active

Utilice el módulo subprocess para ejecutar una secuencia de comandos de Python en otra secuencia de comandos de Python

El módulo subprocess es capaz de generar nuevos procesos y también puede devolver sus resultados. Este es un módulo nuevo y está destinado a reemplazar varios módulos antiguos como os.system, que se usaba anteriormente para ejecutar un script de Python en otro script de Python.

El siguiente código utiliza el módulo subprocess para ejecutar una secuencia de comandos de Python en otra secuencia de comandos de 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)

Producción :

Function 1 is active

Aunque los tres métodos funcionan bien, este método tiene una ventaja sobre los otros dos métodos. En este método no es necesario editar un script de Python existente y poner todo el código que contiene en una subrutina.

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

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.

LinkedIn