[英]key press in a Python subprocess?
try:
subprocess.run(exe_path)
keyboard.press_and_release('enter')
print('Successful Extracted')
except Exception as exe:
print(exe.args)
keyboard.press_and_release('enter')
關鍵是運行windows的EXE,但它需要鍵盤輸入來結束它的進程,除非物理給出鍵盤輸入,否則它會一直卡在那里。 現在我面臨的問題是
subprocess.run('some_exe')
正在運行該進程並成功運行后詢問
Press Any Key To Exit
雖然我已經在subprocess.run旁邊提到過
keyboard.press_and_release('enter')
除非我們手動按下鍵盤上的按鈕,否則它會進入下一行
注意:python3.8
您可以創建一個 .vbs 文件來運行您的 .exe 文件或 python 腳本,而無需控制台調試窗口:
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c python main.py"
oShell.Run strArgs, 0, false
如果您有 .exe 文件,只需將python main.py
替換為yourFile.exe
。
為了一個可重現的示例,假設我們希望將以下 Python 腳本作為子進程運行,我們將其命名為script.py
。
input('Press Enter to exit.')
它不會終止,直到用戶按下Enter鍵。 如果我們想模擬按鍵,我們可以使用Popen.communicate
向子Popen.communicate
的stdin
發送一個換行符。 像這樣:
from subprocess import Popen, PIPE
process = Popen(['python', 'script.py'], stdin=PIPE, text=True)
process.communicate('\n')
顯然,如果外部程序接受任何退出鍵,這也有效。 只發送沒有明顯文本表示的特殊鍵,例如F1 ,會使事情復雜化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.