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 脚本而无需控制台调试 window:
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
向子进程的 stdin
发送一个换行符。像这样:
from subprocess import Popen, PIPE
process = Popen(['python', 'script.py'], stdin=PIPE, text=True)
process.communicate('\n')
外部程序不必是Python脚本,它可以是任何可执行文件。只需将 ['python', 'script.py']
替换为相应的命令行调用,例如['some_exe']
.
显然,如果外部程序接受 any 退出键,这也有效。仅发送没有明显文本表示的特殊键,例如 F1,会使事情复杂化。
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 脚本而无需控制台调试 window:
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
向子进程的 stdin
发送一个换行符。像这样:
from subprocess import Popen, PIPE
process = Popen(['python', 'script.py'], stdin=PIPE, text=True)
process.communicate('\n')
外部程序不必是Python脚本,它可以是任何可执行文件。只需将 ['python', 'script.py']
替换为相应的命令行调用,例如['some_exe']
.
显然,如果外部程序接受 any 退出键,这也有效。仅发送没有明显文本表示的特殊键,例如 F1,会使事情复杂化。