2014-02-21 62 views
1

我必須執行一個命令並將其輸出存儲在文件中。輸出跨越多個頁面,我必須多次按下輸入以查看完整的輸出(類似於當一個人返回多個頁面時)。我正在考慮使用子流程模塊,但是如何在流程提示時爲流程提供輸入。從一個進程輸出

+0

那會是哪個命令? – demux

+0

猜測*少*? – smci

+1

請參閱http://stackoverflow.com/questions/8475290/how-do-i-write-to-a-python-subprocess-stdin – smci

回答

0

聲明:我不知道你實際執行哪個命令,所以這只是在黑暗中刺傷。

您不應該提供任何輸入。
管道中的命令,貓的輸出解決您的問題:

less testfile.txt | cat 

此外,如果你的目標是輸出存儲在另一個文件,你可以簡單地到這個(這將覆蓋):

less testfile.txt > testfilecopy.txt 

(這將追加):

less textfile.txt >> logfile.txt 

參見:https://unix.stackexchange.com/questions/15855/how-to-dump-a-man-page

0

最好的解決方案是檢查進程是否不支持命令行標誌以「批處理模式」運行,禁用分頁或類似的操作來抑制任何此類「等待」。但我想你已經做到了。鑑於您必須以交互方式輸入「-help」,告訴我可能沒有標準的unix命令,這通常很容易在子進程中運行。

在這種情況下,您最好的選擇是使用expect。在pexpect下有python綁定。

期望的腳本往往相當醜陋,並且容易出錯。你必須勤於處理錯誤。我只有有限的實踐經驗,因爲我只修改了一些現有的腳本。我還沒有自己寫過,但從我現有的腳本我知道他們工作,並且他們可靠地工作。