commande grep depuis python

J’ai utilisé la commande grep de shell et cela a donné le résultat que je voulais mais quand je cours à partir de mon script python en utilisant os.popen il a dit

grep: SUMMARY:: No such file or directory 

Commande grep normale:

 grep -A 12 -i "LOGBOOK SUMMARY:" my_folder/logbook.log 

Script python

 command="grep -A 12 -i LOGBOOK SUMMARY: my_folder/logbook.log" result=os.popen(command) 

La commande grep normale a donné le résultat souhaité. Le 2ème a dit non tel fichier ou répertoire

Vous devez inclure le modèle de recherche entre guillemets:

 command="grep -A 12 -i 'LOGBOOK SUMMARY:' my_folder/logbook.log" 

Comment diagnostiquer de tels problèmes? Commencez à partir du message d’erreur:

 grep: SUMMARY:: No such file or directory 

Ce message d’erreur indique que grep n’a pas trouvé de fichier nommé SUMMARY:

La bonne question à poser est la suivante: pourquoi grep recherche-t-il un fichier nommé SUMMARY: Et la réponse est que sur la ligne de commande que vous avez exécutée, d’une manière ou d’une autre, SUMMARY: est considéré comme un nom de fichier:

 command="grep -A 12 -i LOGBOOK SUMMARY: my_folder/logbook.log" 

Bien sûr! C’est ce qui se passerait si vous exécutiez cette commande dans le shell:

 grep -A 12 -i LOGBOOK SUMMARY: my_folder/logbook.log 

Ici, le shell divisera la ligne de commande sur les espaces et passera aux arguments de grep 3, LOGBOOK , LOGBOOK SUMMARY: et my_folder/logbook.log . Le premier argument, LOGBOOK est utilisé comme modèle à rechercher et tous les arguments restants sont considérés comme des noms de fichiers à rechercher.