2

Tengo un proceso desarrollado paso a paso con tres ficheros Python. Quiero hacer un fichero Python principal que vaya ejecutando los ficheros Python paso a paso.

He visto que podría hacerlo con el siguiente código:

import commands
result=commands.getoutput()

Pero no sé como indicar en la función getoutput() dentro de los paréntesis que tome los ficheros Python a ejecutar secuencialmente.

Los tres ficheros Python están en la misma carpeta que tengo el Python principal. Los nombres de los ficheros son:

  • 00_Main.py
  • 01_Extract_Forces_Element_CROD.py
  • 02_Order_LC_Elemen_CROD.py
  • 03_Element_LC_Forces_CRODS.py

Etoy acostumbrado a utilizar dentro de los ficheros principales el comando INCLUDE no sé si en Python funcionaría igual o es mejor el código de arriba

fedorqui
  • 15,850
  • 17
  • 58
  • 112
  • 1
    Primero `commands` esta marcado como "deprecated" desde Python 2.6, en su lugar se usa [`subprocess`](https://docs.python.org/3.6/library/subprocess.html#module-subprocess). Esto es si la idea es ejecutar cada módulo en un proceso distinto. Si no es esto lo que pretendes (y creo que no por lo que deduzco de tu pregunta) lo natural es importar los módulos en tu módulo principal y ejecutar lo que quieras de ellos en el orden que quieras. – FJSevilla Apr 06 '18 at 12:40
  • 1
    Ten el cuenta que el solo hecho de importar un módulo implica la ejecución de este excepto el código encerrado en [`if __name__ == "__main__"`](https://es.stackoverflow.com/q/32165/15089) – FJSevilla Apr 06 '18 at 12:40
  • He intentado correr los Python desde el Python prinicpal con el comando import nombre del fichero.py Tambien lo he intentado con sy subprocess.run(["ls" , "-l"]) y con subprocess.getoutput pero no logro que funcione. – Manuel Jurado Apr 09 '18 at 07:34
  • Para ejecutar con subprocess no puedes usar `subproces.run` en Python 2, podrías hacer `subprocess.call(["python", "01_Extract_Forces_Element_CROD"])` por ejemplo, pero repito que esto ejecuta cada script en un proceso distinto y es una manera un poco rebuscada de hacerlo. – FJSevilla Apr 09 '18 at 08:30
  • Ya he logrado que corra consecutivamente los Python desde un Python principla simplemtne poniendo import nombre_del_fichero consecutivamente uno debajo de otro. El problema es que tenía los ficheros nombrados con 01_nombre, 02_nombre y 03_nombre. No sé por qué da error al encontrar la numeración al cominenzo del nombre del fichero. ¿Alguién me puede decir por qué da ese error por curiosidad? – Manuel Jurado Apr 09 '18 at 08:31
  • Manuel esto pasa porque los identificadores en el import no pueden empezar por un número, como tampoco puedes definir cualquier otro identificador así (nombre de una variable, clase, función...). Esto es un error de sintaxis . Esto no es exclusivo de Python, en C/C++ también pasa esto por ejemplo, las razones son muchas, entre ellas históricas, de optimización, diferenciación no ambigua entre lo que es un literal e identificador, etc. Se podría no obstante importar un módulo así mediante `importlib` pero es complicarse sin necesidad. – FJSevilla Apr 09 '18 at 08:49
  • Muchas gracias por la explicación FJSevilla – Manuel Jurado Apr 09 '18 at 09:11
  • ¿No bastaria con poner en el código principal lo siguiente? `import 01_Extract_Forces_Element_CROD` `import 02_Order_LC_Elemen_CROD` `import 03_Element_LC_Forces_CRODS` – Boris Valderrama Jan 01 '19 at 09:26

0 Answers0