Nuestros programadores estrellas agotaron sus reservas de café, por su búsqueda diariamente por la solución, hasta que Miriam encontró la contestación en GitLab y en este momento la comparte contigo.
Solución:
El error es bastante claro. El archivo hello.py
no es un archivo ejecutable. Debe especificar el ejecutable:
subprocess.call(['python.exe', 'hello.py', 'htmlfilename.htm'])
Necesitarás python.exe
para que sea visible en la ruta de búsqueda, o puede pasar la ruta completa al archivo ejecutable que ejecuta el script de llamada:
import sys
subprocess.call([sys.executable, 'hello.py', 'htmlfilename.htm'])
Los instaladores de Python suelen registrar archivos .py en el sistema. Si ejecuta el shell explícitamente, funciona:
import subprocess
subprocess.call(['hello.py', 'htmlfilename.htm'], shell=True)
# --- or ----
subprocess.call('hello.py htmlfilename.htm', shell=True)
Puede verificar sus asociaciones de archivos en la línea de comando con
C:>assoc .py
.py=Python.File
C:>ftype Python.File
Python.File="C:Python27python.exe" "%1" %*
Recibí el mismo error cuando olvidé usar shell=True
en el subprocess.call
.
subprocess.call('python modify_depth_images.py', shell=True)
Ejecutar comando externo
Para ejecutar un comando externo sin interactuar con él, como se haría con
os.system()
Utilizar elcall()
función.import subprocess Simple command subprocess.call(['ls', '-1'], shell=True)
Si estás de acuerdo, puedes dejar un enunciado acerca de qué le añadirías a este escrito.