簡體   English   中英

Python子進程中的按鍵?

[英]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.communicatestdin發送一個換行符。 像這樣:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM