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.