0

私はシリアルポートを介してLinuxマシンと対話するプログラムを作成しており、次のようにメインの通信チャネルとしてpexpect.spawnを使用しています。

proc = pexpect.spawn("cu dir -l /dev/ttyUSB0 -s 115200", logfile = *someFile*)

そして、sendline( "cmd")メソッドを使用してマシンにコマンドを送信しています。各セッションの最後に、ログファイルを解析して、コマンドがどのように動作するかを確認します。

stdoutとstderrに出力された行をログファイルから区別できるようにしたいのですが、現在はそれを行う方法がありません。これは、stderrに出力された各行の前に特定の文字列をグローバルに追加する方法ですか?

4

2 に答える 2

0

stdoutとstderrをキャプチャする方法については言及していませんが、stdoutとstderrを区別する簡単な方法の1つは、stdoutとstderrを異なるファイルに配置することです。例えば:

./command.py> stdout-log 2> stderr-log

于 2012-03-01T22:11:34.153 に答える
0

これはpexpectの制限だと思います。基本的にブラックボックスのコマンドプロンプトを処理しているため、pexpectは、コンソールに返される文字列が(事実上)stdoutであるかstderrであるかを認識せず、何かが戻ってきただけです。正規表現ベースのポストプロセッサを作成できるように、システムでメッセージとエラーの形式の限られたセットを安全に想定できますか?

于 2012-03-01T22:32:22.600 に答える