¿Cómo llamar a un script desde otro script?
Tengo un script llamado test1.py
que no está en un módulo. Simplemente tiene un código que debería ejecutarse cuando se ejecuta el script. No hay funciones, clases, métodos, etc. Tengo otro script que se ejecuta como servicio. Quiero llamar test1.py
desde el script que se ejecuta como servicio.
Por ejemplo:
Archivo test1.py
:
print "I am a test"
print "see! I do nothing productive."
Archivo service.py
:
# Lots of stuff here
test1.py # do whatever is in test1.py
La forma habitual de hacer esto es algo como lo siguiente.
prueba1.py
def some_func():
print 'in test 1, unproductive'
if __name__ == '__main__':
# test1.py executed as script
# do something
some_func()
servicio.py
import test1
def service_func():
print 'service func'
if __name__ == '__main__':
# service.py executed as script
# do something
service_func()
test1.some_func()
Esto es posible en Python 2 usando execfile
:
execfile("test2.py")
En Python 3, esto es posible usando exec
:
exec(open("test2.py").read())
Consulte la documentación para el manejo de espacios de nombres, si es importante en su caso.
Sin embargo, debería considerar utilizar un enfoque diferente; Tu idea (por lo que puedo ver) no parece muy limpia.
De otra manera:
Archivo prueba1.py:
print "test1.py"
Servicio de archivo.py:
import subprocess
subprocess.call("test1.py", shell=True)
La ventaja de este método es que no es necesario editar un script de Python existente para poner todo su código en una subrutina.
Documentación: Python 2 , Python 3
import os
os.system("python myOtherScript.py arg1 arg2 arg3")
Utilizando el sistema operativo podrás realizar llamadas directamente a tu terminal. Si desea ser aún más específico, puede concatenar su cadena de entrada con variables locales, es decir.
command = 'python myOtherScript.py ' + sys.argv[1] + ' ' + sys.argv[2]
os.system(command)