2012-10-05 52 views
0

我想要做的事likethis使用Pexpect的Pexpect的需要使用管道,而無需啓動bash shell的,因爲bash shell的不理解

echild = pexpect.spawn('/bin/bash -c "sysinfo -v | grep "SCM"') 
fout = file('/home/kiva/release_file.txt' , 'w+') 
child.logfile = fout 

問題的命令是我想的是命令的成textfile,但我必須啓動一個shell,因爲我們不能在spawn()中使用管道。 bash shell不理解sysinfo -v並抱怨它。

你們是否有任何想法或知道的方法,我可以在不打開bash終端的情況下將所需的輸出文件輸入到文件中?我可以通過使用spawn()方法來解決這個問題,而不會對它進行格式化,但我想要完全匹配,因此grep是必需的。

謝謝

+0

你出現在那裏的地方是缺少一個雙引號? – nneonneo

回答

1

從你簡單的例子,我不明白爲什麼你特別需要使用Pexpect的實現這一目標。我會去Popen的方式。下面是可能會被證明是有用的鏈接:

Replacing shell pipeline - Popen