2012-03-01 37 views
0

我寫一個程序通過串口與一臺Linux機器進行交互,和我使用pexpect.spawn作爲我的主要溝通渠道如下:是否有可能預先掛起STDERR每一個給定的字符串

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

我正在用sendline(「cmd」)方法向機器發送命令,並且在每個會話結束時我解析日誌文件以查看命令的行爲。

我想能夠區分從日誌文件打印到stdout和stderr的行,但目前我沒有辦法做到這一點。 這是一種將每行打印到stderr並給定字符串的方式嗎?

回答

0

你沒有提到如何捕獲stdout和stderr,但是區分stdout和stderr的一個簡單方法是簡單地將stdout和stderr放在不同的文件中。例如:

./command.py>標準輸出日誌2>標準錯誤日誌

+0

我通過pexpect.spawn提供的日誌文件'捕獲'它們。由於命令在另一臺計算機上運行,​​因此無法將它們保存到文件中(因爲我無法在兩臺計算機之間傳輸文件) – EagerToLearn 2012-03-01 22:16:57

+0

等待,您是否嘗試從cu實例或命令中捕獲stdout/stderr在遠程linux機器上運行? – Perry 2012-03-01 22:21:05

+0

從在遠程linux機器上運行的命令來看,很抱歉,如果在我的問題中不清楚 – EagerToLearn 2012-03-01 22:22:22

0

我認爲這是Pexpect的的限制。你基本上是在處理一個黑匣子命令提示符,所以pexpect不知道返回到控制檯的字符串(有效)是stdout還是stderr,只是返回一些東西。您可以安全地假設系統中有限的一組消息和錯誤格式,以便您可以編寫一些基於正則表達式的後處理器?

+0

不幸的是,系統必須使用任意一組命令 – EagerToLearn 2012-03-01 22:47:17

相關問題