【发布时间】:2019-12-22 06:08:01
【问题描述】:
我想将我编写的程序从expect 转换为pexpect,但是api 完全不同,我知道和喜欢expect 的许多功能我还没有弄清楚如何使用在python。
我想知道是否有人有一种纯粹与用户互动的方式。在我期望我使用send_user 与expect_user 配对时,这种类型的序列通常由衍生进程中观察到的模式或与衍生进程交互时使用的特殊键码触发。
我看到了send_user 的this 示例,并尝试打印输入提示,然后是python input() 函数,但我的程序锁定了。
这是一个代码sn-p:
import pexpect
import sys
def input_filter(s):
if s == b'\004': # ctrl-d
sys.stdout.write(f'\n\rYou pressed ctrl-d, press y to quit.\r\n')
sys.stdout.flush()
i = input()
if i == 'y':
return b'\r: ok, bye; exit\r'
else:
return b''
else:
return s
proc = pexpect.spawn('bash --norc')
proc.interact(input_filter=input_filter)
【问题讨论】:
-
你真正的需求是什么?
-
当用户与进程进行交互会话时,用户应该输入一个关键代码以与我的程序进行交互会话,例如从菜单中选择他们想要的程序为他们做。这很可能会触发一个或多个进程的一系列发送/预期。命令完成后,它们应该返回到原始进程的交互中。
-
如果我可以让我的最小示例接收输入并做出决定(如在 if 语句中),那么我想我可以让我的其余要求正常工作。