我的问题很简单:我可以使用expect()查看stderr上的某些输出吗?似乎pexpect.spawn()只能用于期望标准输出上的输出。
乌托邦的例子:
import pexpect child = pexpect.spawn(...) child.expect("hi", fd=pexpect.STDERR)
或者在散文中,“期待stderr上的字符串'hi‘”。
我在文档中没有找到任何提到这样的工具的地方,但是我确实注意到child实例有一个stderr属性...
我想要的一个技巧就是将标准错误重定向到衍生参数中的标准输出,然后我们就可以使用常规的expect()了。一定有更好的办法吗?
干杯
发布于 2016-06-12 00:48:28
对于后人来说,根据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')https://stackoverflow.com/questions/27179383
复制相似问题