Topic: Apertura exe con os.system senza terminale  (Letto 516 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline jonny banana

  • python unicellularis
  • *
  • Post: 3
  • Punti reputazione: 0
    • Mostra profilo
Apertura exe con os.system senza terminale
« il: Settembre 12, 2017, 03:22 »
Ciao ragazzi mi chiamo Nico e sono nuovo nel Forum, colgo quindi l'occasione per salutare tutti
C'è un problema che mi attanaglia la mente da giorni, sono riuscito già a risolverlo ma senza l'ausilio di python e vorrei chiedere ai più esperti se c'è un modo per fare ciò che desidero usando solo codice python.

In pratica devo aprire dei portable (exe) da python con os.system,  solo che come già ben saprete oltre ad aprire l'applicazione viene aperto un terminale, io vorrei che l'app si aprisse ma il terminale no.
Allora, il semplice comando è questo (in realta sarebbe più complesso, in quanto è il comando di un tasto di un interfaccia grafica che sto facendo con Tkinter, ma il problema sta proprio li, percui ometto il resto del codice per semplificare la vita a tutti)

import os
os.system('portabledafarpartirer.exe')

Anticipo che ho già cercato risposte sia qui nel forum che in rete, ma senza trovare il thread che fà per me (magari ho cercato male? keyboard sbagliate?), e visto che ci siamo racconto a tutti come ho risolto io la cosa (casomai potesse servire a qualcuno con lo stesso dramma),  anche se sono in cerca di una soluzione diciamo più elegante.
Ho  provato sia a far chiamare il portable da un altro file .pyw, ma nn ha funzionato, ho provato a creare il clasisco file vbs che si usa per occultare l'esecuzione di files, ma ovviamente non va bene perchè nasconde non solo il terminale ma anche l'esecuzione dell'applicazione stessa.
Visto che il programma che sto facendo deve girare esclusivamente in ambiente Windows mi sono appoggiato ad Autoit, che è un'applicazione  per automatizzare procedure nei sistemi Windows, il programma crea un file .au3, che può essere chiamato da un altro file py ed elimina l'apertura del terminale ma non quella dell'applicazione. (in realtà il file principale di python chiama il file .au3 che a sua volta chiama un altro file.py che finalmente fà partire l'applicazione, insomma a me sembrano sicuramente troppi passaggi e vorrei ottimizzare la cosa, se possibile... senza contare i problemi relativi al formato .au3 che richiede poi il programma Autoit per essere letto, anche se poi creando l'exe finale il problema dovrebbe risolversi, o almeno credo)
 Quindi la domanda è: c'è modo di fare tutto ciò in Python?
( Scusate per il Pippone :) )
« Ultima modifica: Settembre 12, 2017, 03:43 da jonny banana »

Offline GlennHK

  • python sapiens sapiens
  • ******
  • Post: 1.655
  • Punti reputazione: 1
    • Mostra profilo
    • La Tana di GlennHK
Re:Apertura exe con os.system senza terminale
« Risposta #1 il: Settembre 12, 2017, 09:47 »
Ora non ricordo, ma hai provato ad usare subprocess.call?

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.020
  • Punti reputazione: 9
    • Mostra profilo
Re:Apertura exe con os.system senza terminale
« Risposta #2 il: Settembre 12, 2017, 13:47 »
Sì, o meglio subprocess.run come si usa adesso, visto che call è roba vecchia. O meglio ancora subprocess.Popen, che non è bloccante e ti dà più controllo. Vedi per esempio anche, tra i molti, http://www.python-it.org/forum/index.php?topic=10298.

Offline jonny banana

  • python unicellularis
  • *
  • Post: 3
  • Punti reputazione: 0
    • Mostra profilo
Re:Apertura exe con os.system senza terminale
« Risposta #3 il: Settembre 12, 2017, 14:15 »
Grazie mille ragazzi, stasera provo e vi  faccio sapere il risultato, intanto vi ringrazio per il velocisimo aiuto  ;)

Offline jonny banana

  • python unicellularis
  • *
  • Post: 3
  • Punti reputazione: 0
    • Mostra profilo
Re:Apertura exe con os.system senza terminale
« Risposta #4 il: Settembre 14, 2017, 22:51 »
Ciao ragazzi confermo che per la mia situazione subprocess.Popen rappresenta la soluzione ideale, vi ringrazio ancora per l'aiuto
Saluti a tutti ;)