我需要幫助python代碼在python中執行多個管道外殼命令。 我寫了下面的代碼,但我得到錯誤。當我將文件傳遞給命令時。請讓我知道如何在python中執行多個管道命令的正確過程。在python中執行管道外殼命令
EG: cat file|grep -i hostname|grep -i fcid
是我想要執行的shell命令。這是我的Python代碼。當我運行代碼時,我得到None。我將最終輸出重定向到一個文件。
#!/usr/bin/python3
import subprocess
op = open("text.txt",'w')
file="rtp-gw1"
print("file name is {}".format(file))
#cat file|grep -i "rtp1-VIF"|grep -i "fcid"
#cmd ='cat file|grep -i "rtp1-vif"'
p1 = subprocess.Popen(['cat',file],stdout=subprocess.PIPE, stderr=subprocess.PIPE,shell=True)
p2 = subprocess.Popen(['grep','-i', '"rtp1-vif"',file], stdin=p1.stdout, stdout=subprocess.PIPE,stderr= subprocess.PIPE,shell=Ture)
p1.stdout.close()
p3 = subprocess.Popen(['grep', '-i',"fcid"],stdin=p1.stdout, stdout=op,stderr= subprocess.PIPE,shell=Ture)
p2.stdout.close()
result = p3.communicate()[0]
print(result)
'shell = Ture'?當真? –
btw爲什麼要用'cat'? 'grep'可以在輸入文件中輸入一個文件 –
嘗試使用'p1.communicate(),p2.communicate()'關閉文件並在得到結果後將它們全部放在最後 – Vinny