我有一個應用程序,我試圖通過Python和子流程模塊進行控制。本質上,我所做的是使用Popen(打開命令提示符在其中執行程序)啓動應用程序,然後在某個時間點執行後,我需要向該程序的STDIN發送一個字符串(一條命令) 。除了在我手動在Python啓動的應用程序的命令窗口中輸入一個按鈕之前,該命令沒有得到處理這一事實之外,這很好。這裏是我的代碼的一部分:問題在Windows上使用Python的subprocess.communicate()
cmd = 'quit\n'
app.communicate(cmd.encode('utf-8'))
任何想法?
編輯#1
是鍵入一個按鈕是否意味着按鍵盤,遺憾的混亂上的按鍵。我已經附加更多的我的代碼如下
app = Popen(['runProg.exe', '-m', '20'], stdin=PIPE, universal_newlines=True)
while not os.path.exists('C:/temp/quit-app.tmp'): time.sleep(1)
app.communicate('quit')
os.remove('C:/temp/quit-app.tmp')
那麼會發生什麼是程序要運行,直到創建戒菸app.tmp文件;一旦創建「退出」應該發送到應用程序,這是一個乾淨關閉的命令。如果一個人在運行這個程序,他們只需在命令窗口中輸入「quit」即可。謝謝!
你能否確認通過「輸入按鈕」,你的意思是按下一個鍵(鍵盤) - 我想是這樣,但只是爲了避免混淆。這是一個正常的控制檯應用程序嗎?你的Popen電話是什麼樣的?也許再多貼一點你的代碼,就沒有太多的工作要做。 – RedGlyph 2009-10-28 17:54:21