我的问题很简单:我expect()可以使用pexpect在stderr上查看某些输出吗?它似乎pexpect.spawn()只能用于期望stdout上的输出.
乌托邦的例子:
import pexpect
child = pexpect.spawn(...)
child.expect("hi", fd=pexpect.STDERR)
或者在散文中,"期待stderr上的字符串'hi'".
我没有在文档中找到任何提及这样的工具,但我注意到该child实例有一个stderr属性......
一个半实现我想要的黑客是将stderr重定向到spawn参数中的stdout,然后我们可以使用常规expect().肯定有更好的办法?
干杯
对于后人来说,根据Thomas K的评论,这似乎符合您的要求:
import os
import subprocess
from pexpect import fdpexpect
program = ['/path/to/command', '--arg1', 'value1', '--arg2', 'value2']
devNull = open(os.devnull, 'w')
command = subprocess.Popen(program, stdout=devNull,
stdin=subprocess.PIPE, stderr=subprocess.PIPE)
child = fdpexpect.fdspawn(command.stderr)
child.expect('hi')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2762 次 |
| 最近记录: |