J'ai besoin d'aide avec le code python pour exécuter plusieurs commandes shell en Python. J'ai écrit le code suivant mais je reçois une erreur. Comme je passe le fichier à la commande. S'il vous plaît laissez-moi savoir le processus correct sur la façon d'exécuter plusieurs commandes canalisées en python.Exécution de commandes shell en Python
EG: cat file|grep -i hostname|grep -i fcid
est la commande shell que je veux exécuter. Voici mon code python. Je reçois None lorsque je cours le code. Je redirige la sortie finale vers un fichier.
#!/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'? sérieusement? –
btw pourquoi utiliser 'cat'? 'grep' peut prendre un fichier en entrée que vous connaissez –
Essayez de fermer les fichiers en utilisant' p1.communicate(), p2.communicate() 'et placez-les tous à la fin après avoir obtenu le résultat – Vinny