A continuación, crearemos y manipularemos un proceso a través de la línea de código de otro proceso en ejecución. Para ello se utilizará el módulo subprocess de la librería subprocess.py
La forma más sencilla de lanzar un proceso sería usar el método estático run de un subprocess, al cual se le puede pasar algunas de estas opciones:
NOTA: Aunque call() sería una función similar a run(), hay que procurar utilizar esta última, ya que call() podría estar obsoleta en breve.
run_run.py
import subprocess
try:
subprocess.run(['Notepad.exe',])
subprocess.run(['c:/windows/notepad.exe',])
subprocess.run(['Notepad.exe','texto.txt'])
except subprocess.CalledProcessError as e:
print(e.output)
Envío de parámetros enumerados en la lista, justo después del nombre del proceso (el primer elemento de la lista).
import subprocess
try:
subprocess.run(["ping", "psp.fp.edu.es","-n","5"])
#en linux
#subprocess.run(["ping", "psp.fp.edu.es","-c","5"])
except subprocess.CalledProcessError as e:
print(e.output)
Otra posibilidad, es pasar información de los parámetros a través de la clase STARTINFO (sólo funciona en windows). Sus propiedades más destacables son:
Para saber mucho más: https://docs.python.org/es/3/library/subprocess.html
import subprocess
def iniciaPrograma():
try:
SW_SHOWMAXIMIZED = 3
info = subprocess.STARTUPINFO()
info.dwFlags |= subprocess.STARTF_USESHOWWINDOW
info.wShowWindow = SW_SHOWMAXIMIZED
subprocess.Popen('Notepad.exe', startupinfo=info)
except subprocess.CalledProcessError as e:
print(e.output)
iniciaPrograma()
input("Pulsa una tecla para terminar la ejecución")
Prueba a cambiar a: SW_SHOWMAXIMIZED = 1