簡體   English   中英

從pexpect中提取stderr

[英]Extracting stderr from pexpect

我的問題很簡單:我可以expect()使用pexpect在stderr上看到某些輸出嗎? 看來pexpect.spawn()僅可用於期待stdout上的輸出。

烏托邦式的例子:

import pexpect child = pexpect.spawn(...) child.expect("hi", fd=pexpect.STDERR)

或在散文中,“請在stderr上使用字符串'hi'”。

我沒有在文檔中找到任何提及此類功能的信息,但我確實注意到該child實例具有stderr屬性...

一種半實現我想要的技巧是在spawn參數中將stderr重定向到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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM