Estoy tratando de usar Python para ejecutar un ejecutable (Windows 7) con parámetros. He podido ejecutar el programa, pero la cantidad de parámetros que puedo usar que demostrarán que el script de Python funcionó con parámetros es limitada. El mejor tiene el siguiente formato:

-debugoutput debug.txt

He probado esto usando un acceso directo de Windows con un objetivo editado y funciona, crea una salida de depuración en el directorio del programa.

Aquí está el código que estoy usando:

import subprocess
args = [r"C:\Users\MyName\LevelEditor\LevelEditor.exe", "-debugoutput debug.txt"]
subprocess.call(args)

Esto ejecuta el programa, pero no se crea la salida de depuración. He intentado poner una "r" delante del parámetro pero esto no hizo ninguna diferencia. Supongo que es un error de formato simple, pero no puedo encontrar ningún ejemplo para aprender que haga lo mismo.

Actualizar:

Gracias por las respuestas a todos, de todos modos, error de formato simple de hecho.

0
user6320219 11 may. 2016 a las 15:27

3 respuestas

La mejor respuesta

La definición en código da como resultado la invocación de la línea de comando de shell:

C:\Users\MyName\LevelEditor\LevelEditor.exe "-debugoutput debug.txt"

Como puede ver, al fusionar -debugoutput debug.txt con un único elemento de lista, usted declaró explícitamente que el espacio entre ellos no debería analizarse como un separador de argumento de línea de comando.

Para lograr el comportamiento esperado, coloque la cadena del nombre del archivo como elemento separado en la lista de argumentos.

[r"C:\Users\MyName\LevelEditor\LevelEditor.exe", "-debugoutput", "debug.txt"]
1
Łukasz Rogalski 11 may. 2016 a las 12:42

Hasta donde sé, necesitas dividir los argumentos por el espacio, para que tus argumentos se vean así:

args = [r"C:\Users\MyName\LevelEditor\LevelEditor.exe", "-debugoutput", "debug.txt"]

¿Eso funciona?

0
Matthias Schreiber 11 may. 2016 a las 12:34

No sé si funciona, pero

import subprocess
args = [r"C:\Users\MyName\LevelEditor\LevelEditor.exe", "-debugoutput", "debug.txt"]
subprocess.run(args)

Siguiendo los docs

0
gunzapper 11 may. 2016 a las 12:36