es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo ejecutar Popen con argumentos sin “-e” en gnome 3.36.9.

Tenía un tema aquí antes, pero mi problema no está resuelto…

Utilicé una versión anterior de Gnome durante mucho tiempo y mi script funcionaba muy bien. He instalado la última versión de Gnome (3.36.9) y hay un pequeño problema que no interfiere con el uso del programa. Me refiero a un error:

La opción "-e" está obsoleta y podría eliminarse en una versión posterior de gnome-terminal. Usa "--" para finalizar las opciones y colocar la línea de comandos a ejecutar después de eso.

No me impide usar o ejecutar el programa, pero quiero eliminar los errores en la consola.

Mi código anterior, que funcionaba, se ve así:

    # <--- CONFIGURACIÓN ---> #
    os.chdir("/home/administrator/program/cartypes")
    car1 = "audi"
    color1 = "black"
    engine = "diesel"
    # <--- CONFIGURACIÓN ---> #
p1 = Popen(['gnome-terminal', '--wait', '-e','python3 ./program.py --car ' + car1 + ' --color ' + color1 + ' --engine ' + engine1])
time.sleep(5)
p1.communicate()
p1.wait()
print("¡Fin!")

Leí un poco y cambié “-e” por “–“, es decir:

p1 = Popen(['gnome-terminal', '--wait', '--','python3', './program.py'])

Y teóricamente el programa comienza, pero desafortunadamente ya no funciona cuando agrego argparse al código y no sé cómo conectar el script de trabajo con los argumentos enviados a program.py como antes en el primer código con “-e”:

p1 = Popen(['gnome-terminal', '--wait', '--','python3', './program.py'])
```

con:

</code></pre>

./program.py --car ' + car1 + ' --color ' + color1 + ' --engine ' + engine1
````

¡Gracias! :)

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en pasar argumentos al script utilizando Popen y gnome-terminal. En lugar de usar Popen, podrías intentar usar el módulo subprocess y pasar los argumentos utilizando la función subprocess.run(). Aquí tienes un ejemplo:

    import subprocess
    
    # <--- CONFIGURACIÓN --->
    car1 = "audi"
    color1 = "black"
    engine1 = "diesel"
    # <--- CONFIGURACIÓN --->
    
    subprocess.run(["gnome-terminal", "--", "python3", "./program.py", "--car", car1, "--color", color1, "--engine", engine1])
    

    Esto abrirá un gnome-terminal y ejecutará el script program.py con los argumentos proporcionados. Asegúrate de que el script program.py acepte estos argumentos utilizando el módulo argparse.

Comments are closed.