Risolto usando SendKeys [1], il quale usa chiamate alle API di windows.h. E' inevitabile dal momento che "Press any key" si aspetta un segnale di basso-livello della console, e non da standard input.
[1] http://www.rutherfurd.net/python/sendkeys/ Il 15 aprile 2009 10.43, G. Allegri <gioha...@gmail.com> ha scritto: > Sì, ho provato sia con > > stdout_value = proc.communicate('\n')[0] > > che con > > proc.stdin.write('\n') > > ma niente da fare. Addirittura con SendKeys non ottengo il risultato... > > Il 14 aprile 2009 16.05, G. Allegri <gioha...@gmail.com> ha scritto: >> Gentili colleghi pythonisti, >> sono alle prese col modulo subprocess, perché devo interagire con >> un'applicazione console su Windows (di terze parti), la quale richiede >> alla fine dell'esecuzione (e dopo aver stampato i risultati sullo >> stdout) che l'utente prema sulla tastiera per fare terminare il >> processo. >> >> Sono bloccato alle prime righe: >> >> proc = subprocess.Popen('la_mia_applicazione', >> shell=True, >> stdout=subprocess.PIPE, >> ) >> stdout_value = proc.communicate()[0] >> #stdout_value = proc.stdout.readlines() >> PROCESS_TERMINATE = 1 >> handle = win32api.OpenProcess(PROCESS_TERMINATE, False, proc.pid) >> win32api.TerminateProcess(handle, -1) >> win32api.CloseHandle(handle) >> print stdout_value >> >> Ho usato TerminateProcess per forzare l'uscita dall'applicazione senza >> l'interazione con l'utente, ma ricevo un errore di 'Access Denied' >> perché, suppongo, proc.communicate (ma anche proc.stdout.readlines) >> mantengono un handle su proc in attesa, forse, di un EOF, che non ci >> sarà mai poiché l'applicazione non termina... >> Se non leggo lo stdout, ovviamente, riesco a forzare il termine del >> programma senza errori. >> >> Come posso uscire da questo inghippo? >> Grazie, >> Giovanni >> > _______________________________________________ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python