我有一个程序,当从Windows命令提示符运行时,我需要按Enter键以回答许多问题。我正在尝试自动化运行程序并从Python按下Enter的过程。
我的尝试
import subprocess
from time import sleep
p = subprocess.Popen(['bcontroller','login','aws'], stdin=subprocess.PIPE, shell=True)
for _ in range(5):
sleep(10)
p.communicate(input=b'\n')
运行此命令时,我首先收到警告:
错误:功能不正确。
然后在大约10秒钟后,subprocess引发错误,该错误将停止执行:
ValueError:写入关闭的文件
有人知道出什么问题了吗?
在with上下文中处理与进程的通信。
以下代码是您发布的代码的改编版,尚未经过正确性测试。
import subprocess
from time import sleep
with subprocess.Popen(
['bcontroller', 'login', 'aws'],
stdin=subprocess.PIPE,
shell=True,
) as p:
for _ in range(5):
sleep(10)
p.communicate(input=b'\n')