from subprocess import *
c = 'dir' #Windows
handle = Popen(c, stdin=PIPE, stderr=PIPE, stdout=PIPE, shell=True)
print handle.stdout.read()
handle.flush()
Se non utilizzare shell=True
dovrete fornire Popen()
con un elenco invece di una stringa di comando, ad esempio:
c = ['ls', '-l'] #Linux
e quindi aprirlo senza guscio.
handle = Popen(c, stdin=PIPE, stderr=PIPE, stdout=PIPE)
print handle.stdout.read()
handle.flush()
Questo è il modo più flessibile e manuale per chiamare un sottoprocesso da Python. Se si desidera solo l'uscita, andare per:
from subproccess import check_output
print check_output('dir')
per aprire una nuova finestra di console GUI ed eseguire X:
import os
os.system("start cmd /K dir") #/K remains the window, /C executes and dies (popup)
Lei non ha mostrato un vero e proprio base di codice, quindi ho appena creato un esempio di comando di seguito basato su 'dir' in windows e' ls' in linux per elencare il contenuto della cartella. – Torxed
@Torxed Ho provato il tuo codice e ci sono alcune cose che non mi piacciono: non vedo una nuova console che si apre. Vorrei creare una seconda console e poter leggere l'output del programma che eseguo con 'popen' nella nuova console. Nel mio programma principale, non ho bisogno dell'output del programma che eseguo con 'popen'. Ho solo bisogno di vederlo in una console diversa. Potresti fornire un esempio di come dovrebbe essere implementato? –
Questo non era chiaro dalla descrizione del problema originale, perché vedi "aprire uno script in una console separata" è esattamente ciò che fa ".Popen()", e se controlli il tuo monitor di processo noterai che un cmd .exe viene lanciato da te chiamando '.Popen()', non è visibile perché è un sottoprocesso della tua applicazione ed è "disattivato". In genere non si aprono nuove finestre della GUI per eseguire attività, quindi posso chiederti perché lo vuoi? perché mi sembra che sia al contrario:/ – Torxed