Lorsque vous exécutez diff en python et que vous voulez à la fois le code de retour et la sortie

Je veux obtenir le résultat de diff avec python

Il y avait des moments où je voulais exécuter un diff sur python. Plus précisément, lorsque vous souhaitez jeter un coup d'œil rapide sur les différences entre les fichiers surveillés.

Eh bien, vous pouvez tout faire avec shell, mais si vous voulez faire diverses choses avant cela, python est plus pratique.

Dans un tel cas, le sous-processus check_output est pratique. diff est exit 1 lorsqu'une différence se produit et check_output lève une exception lorsqu'il n'est pas 0. Ainsi, le code de retour et la sortie sont inclus dans les attributs d'exception, vous pouvez donc les récupérer.

échantillon

subprocess_sample.py


# -*- coding: utf-8 -*-
import subprocess
import shlex
import sys

file1 = sys.argv[1]
file2 = sys.argv[2]

command_line = "diff -u {} {}".format(file1, file2)
command_args = shlex.split(command_line)

rc = 0
try:
    rc = subprocess.check_output(command_args)
except subprocess.CalledProcessError as cpe:
    print "shell returncode is not 0."
    print "returncode: {}".format(cpe.returncode)
    print "output: {}".format(cpe.output)
    rc = cpe.returncode

print rc
% python subprocess_sample.py hoge_old.txt hoge_new.txt
shell returncode is not 0.
returncode: 1
output: --- hoge_old.txt        2015-06-27 14:29:03.000000000 +0900
+++ hoge_new.txt        2015-06-27 14:28:54.000000000 +0900
@@ -1,2 +1,2 @@
-hoge
+hogo
 foo

1

Il y avait un module de commandes, mais il est obsolète dans la série 3 et est obsolète dans la série 2 (2.7 et versions ultérieures).

Recommended Posts

Lorsque vous exécutez diff en python et que vous voulez à la fois le code de retour et la sortie
Exporter et exporter des fichiers en Python
[Python] Lorsque vous souhaitez importer et utiliser votre propre package dans le répertoire supérieur
[Sous-processus] Lorsque vous souhaitez exécuter un autre programme Python en code Python
[Python] Lorsque vous souhaitez utiliser toutes les variables dans un autre fichier
Il est pratique d'utiliser stac_info et exc_info lorsque vous souhaitez afficher la traceback dans la sortie du journal par journalisation.
Paramètres lorsque vous souhaitez exécuter python-mecab avec travis
entrée et sortie python
% Et str.format () en Python. Lequel utilisez-vous?
Utilisez communiquer () lors de la réception de la sortie dans un sous-processus Python
Sortie japonaise avec Python
Sortie japonaise lors de l'utilisation de python dans Visual Studio
Lorsque vous voulez plt.save dans l'instruction for
Lorsqu'une erreur se produit dans le scraping python (requêtes)
Recherche récursive de fichiers et de répertoires en Python et sortie
Je veux faire quelque chose avec Python à la fin
Que faire si vous exécutez python sur IntelliJ et quittez avec une erreur
[Python3] Code qui peut être utilisé lorsque vous souhaitez redimensionner des images dossier par dossier
[Django] Mémorandum lorsque vous souhaitez communiquer de manière asynchrone [Python3]
En Python, les éléments de la liste sont triés et sortis sous forme d'éléments et de multiples.
[Selenium] Changer la destination de sortie du journal lors de l'exécution de phantomjs avec python3
Problèmes et solutions à la demande de MySQL db dans Python 3
Je veux pouvoir exécuter Python avec VS Code
Lorsque vous souhaitez lancer une commande UNIX sur Python
Exécuter des tâches automatisées en Python
Exécuter des commandes shell en Python
Attention lorsque os.mkdir en Python
Pile et file d'attente en Python
Unittest et CI en Python
Lire la sortie Fortran avec python
Écrivez un script dans Shell et Python pour vous avertir dans Slack lorsque le processus est terminé
Lorsque vous souhaitez remplacer plusieurs caractères dans une chaîne de caractères sans utiliser d'expressions régulières dans la série python3
Comment installer OpenCV sur Cloud9 et l'exécuter en Python
Je veux résoudre APG4b avec Python (seulement 4.01 et 4.04 au chapitre 4)
Ligne de mode lorsque vous ouvrez le code Python approprié dans Vim
Je veux exécuter l'interface graphique Python au démarrage de Raspberry Pi
Précautions lors du passage de def aux fonctions triées et groupby en Python? ??
Je souhaite utiliser à la fois la clé et la valeur de l'itérateur Python
Si vous souhaitez affecter une exportation csv à une variable en python
[Texte court] Lors du retour dans les deux clauses try, clause except et clause finally
Paquets qui gèrent le MIDI avec Python midi et pretty_midi
Différence entre list () et [] en Python
Sortie de la liste du vendredi Premium 2017 en Python
Différence entre == et est en python
Afficher les photos en Python et html
Algorithme de tri et implémentation en Python
Lançons "python -m antigravity" en python
Exécutez la commande shell / Python dans R
Comportement lors de la liste dans Python heapq
Jusqu'à ce que vous mettiez Python dans Docker
Manipuler des fichiers et des dossiers en Python
À propos de Python et Cython dtype
Affectations et modifications des objets Python
Rendre la sortie standard non bloquante en Python
Vérifiez et déplacez le répertoire en Python
Hashing de données en R et Python
Synthèse de fonctions et application en Python