Si vous souhaitez exécuter une tâche à chaque fois que vous enregistrez un fichier avec un éditeur, vous pouvez utiliser Guard pour Ruby, Grunt si vous écrivez JS, mais ce genre d'outil lors de l'écriture de code Python Je souhaite également utiliser quelque chose de fabriqué par Python. Ici, watchdog est utilisé.
Introduit
pip install watchdog
Ensuite, vous pouvez utiliser la commande watchmedo de l'utilitaire de ligne de commande. Si vous souhaitez surveiller les événements du système de fichiers et exécuter des commandes spécifiques, cela ressemble à ceci
watchmedo shell-command --patterns="*.py" --recursive --command='echo "${watch_src_path} is saved"' .
Comme vous pouvez le voir dans le Readme de watchdog, je ne peux pas obtenir les événements du système de fichiers lors de l'utilisation de vim sur un terminal MacOSX +. C'est une bonne idée de modifier les paramètres vim suivants afin de ne pas créer de fichier d'échange. Mon .vimrc est le suivant. Ou si vous surveillez le fichier . *. Swp, cela fonctionnera.
.vimrc
let OSTYPE = system('uname')
if OSTYPE == "Darwin\n"
set noswapfile
set nowritebackup
endif
Par exemple, si vous avez une tâche de test dans votre Makefile et que vous souhaitez ajouter une tâche de surveillance qui exécute la tâche de test lorsque vous enregistrez le fichier.
Makefile
watch:
#Sous le répertoire des applications*.Surveillez les événements de fichier py et exécutez make test
@echo Watch file changes and run test
watchmedo shell-command --interval=5 --patterns="*.py" -R -W -D --command='make test' app
test:
# (Exemple)Exécuter des tests Django
python app/manage.py test;
Une option de prévention du double démarrage est nécessaire pour empêcher l'exécution de plusieurs tests lorsque plusieurs événements du système de fichiers sont ignorés.
Recommended Posts