pexpect 没有用 pexpect.expect 阻止我的脚本

pexpect did not block my script with pexpect.expect

我正在制作一个预期 Python 的任务调度程序。
这是用一个简单的想法实现的:

term = spawnu('tcsh') # I need a tcsh instead of its default bash
term.sendline('FIRST_TASK')
term.expect('MY_SHELL_PROMPT') # When parent receive prompt means end of previous task.
term.sendline('SECOND_TASK')
...(and so on)

但是我发现pexpect.expect并没有屏蔽这一行:

term.expect('MY_SHELL_PROMPT') # Go through this line before finish of previous task.

因为它与设置为上一个任务的最后输出的匹配模式一起工作。我怀疑 pexpect.expect 在 child 开始工作之前匹配了 MY_SHELL_PROMPT。我在匹配之前添加了一些延迟。但是,即使我在 pexect.expect.

之前添加延迟,也会发生这种情况
time.sleep(2)  # delay for 2 second 
term.expect('MY_SHELL_PROMPT')

有人知道如何调试吗?任何帮助将不胜感激。

我想我自己找到了答案。
pexpect 不区分来自 child.
的回显命令和输出 所以我之前的尝试很难做到这一点。

我通过将检查代码保存在 txt 文件中解决了这个问题。 child 可以通过在 child.
中调用 'cat' 来反馈此类文件 例如:

#check_code.txt
----YOUR JOB IS DONE----

#In testPexpect.py
term.sendline('cat check_code.txt')  # this prevents matching its echoed command
term.expect('----YOUR JOB IS DONE----') # blocks and matches successfully