我的问题很简单:我可以吗?expect()
使用 pexpect 查看 stderr 上的某些输出?它似乎pexpect.spawn()
只能用于期望 stdout 上的输出。
乌托邦的例子:
import pexpect
child = pexpect.spawn(...)
child.expect("hi", fd=pexpect.STDERR)
或者用散文来说,“期望 stderr 上有字符串‘hi’”。
我在文档中没有发现任何提及此类设施的信息,但我确实注意到child
实例有一个stderr
属性...
半实现我想要的效果的一个技巧是将 stderr 重定向到生成参数中的 stdout,然后我们可以使用常规expect()
。一定会有更好的办法?
Cheers
为了后代,并基于评论Thomas K https://stackoverflow.com/users/434217/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')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)