2012-10-09 148 views
3

我有一個輸入文件test.txt作爲輸出: 主持人:DC2000 主持人:192.168.178.2如何獲得grep命令(Python)的

我想通過使用獲得所有這些機器的地址:

grep "host:" /root/test.txt 

等等,我通過Python get命令輸出中:

import subprocess 
file_input='/root/test.txt' 
hosts=subprocess.Popen(['grep','"host:"',file_input], stdout= subprocess.PIPE) 
print hosts.stdout.read() 

但結果是空字符串。

我不知道我得到了什麼問題。你能告訴我如何解決?

回答

3

您的代碼應該工作,你確定用戶具有讀取該文件的訪問權限?

另外,你確定文件中有一個"host:"?你可能意味着這個:

hosts_process = subprocess.Popen(['grep','host:',file_input], stdout= subprocess.PIPE) 
hosts_out, hosts_err = hosts_process.communicate() 
+0

它工作,我讓''主機:''到'主機:'。謝謝你 – SieuTruc

+0

@Shai:是的,你說得對。該示例最多不完整 – Wolph

+0

@Wolph感謝修復 – Shai

5

試一下:

import subprocess 
hosts = subprocess.check_output("grep 'host:' /root/test.txt", shell=True) 
print hosts 
+0

,謝謝你的第二個解決方案 – SieuTruc

+0

是有可能,'check_output'拋出'subprocess.CalledProcessError'異常,如果'grep'沒有發現該文件中的字符串的發生? – Shai