Wenn Sie diff in Python ausführen und sowohl Rückkehrcode als auch Ausgabe wünschen

Ich möchte das Ergebnis von diff mit Python erhalten

Es gab Zeiten, in denen ich einen Diff auf Python ausführen wollte. Insbesondere, wenn Sie einen kurzen Blick auf die Unterschiede zwischen den überwachten Dateien werfen möchten.

Nun, Sie können alles mit Shell machen, aber wenn Sie vorher verschiedene Dinge machen wollen, ist Python bequemer.

In einem solchen Fall ist der Unterprozess check_output praktisch. diff ist Exit 1, wenn ein Unterschied auftritt, und check_output löst eine Ausnahme aus, wenn nicht 0. Zu den Ausnahmeattributen gehören also Rückkehrcode und Ausgabe, sodass Sie sie abholen können.

Stichprobe

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

Früher gab es ein Befehlsmodul, aber dieses ist in Serie 3 veraltet und in Serie 2 (2.7 und höher) veraltet.

Recommended Posts

Wenn Sie diff in Python ausführen und sowohl Rückkehrcode als auch Ausgabe wünschen
Exportieren und Ausgeben von Dateien in Python
[Python] Wenn Sie Ihr eigenes Paket im oberen Verzeichnis importieren und verwenden möchten
[Unterprozess] Wenn Sie ein anderes Python-Programm in Python-Code ausführen möchten
[Python] Wenn Sie alle Variablen in einer anderen Datei verwenden möchten
Es ist praktisch, stac_info und exc_info zu verwenden, wenn Sie Traceback in der Protokollausgabe durch Protokollierung anzeigen möchten.
Einstellungen, wenn Sie Python-Mecab mit Travis ausführen möchten
Python-Eingabe und Ausgabe
% Und str.format () in Python. Welches benutzt du?
Verwenden Sie communic (), wenn Sie eine Ausgabe in einem Python-Unterprozess empfangen
Japanische Ausgabe mit Python
Japanische Ausgabe beim Umgang mit Python im Visual Studio
Wenn Sie in der for-Anweisung plt.save möchten
Wenn beim Python-Scraping ein Fehler auftritt (Anforderungen)
Suchen Sie rekursiv nach Dateien und Verzeichnissen in Python und geben Sie sie aus
Ich möchte am Ende etwas mit Python machen
Was tun, wenn Sie Python auf IntelliJ ausführen und mit einem Fehler beenden?
[Python3] Code, der verwendet werden kann, wenn Sie die Größe von Bildern Ordner für Ordner ändern möchten
[Django] Memorandum, wenn Sie asynchron kommunizieren möchten [Python3]
In Python werden die Elemente in der Liste sortiert und als Elemente und Vielfache ausgegeben.
[Selenium] Ändern Sie das Protokollausgabeziel, wenn Sie Phantomjs mit Python3 ausführen
Probleme und Lösungen bei der Frage nach MySQL db in Python 3
Ich möchte Python mit VS-Code ausführen können
Wenn Sie einen UNIX-Befehl in Python ausführen möchten
Führen Sie automatisierte Jobs in Python aus
Führen Sie Shell-Befehle in Python aus
Achtung bei os.mkdir in Python
Stapel und Warteschlange in Python
Unittest und CI in Python
Lesen Sie die Fortran-Ausgabe mit Python
Schreiben Sie ein Skript in Shell und Python, um Sie in Slack zu benachrichtigen, wenn der Vorgang abgeschlossen ist
Wenn Sie mehrere Zeichen in einer Zeichenfolge ersetzen möchten, ohne reguläre Ausdrücke in der Python3-Serie zu verwenden
So installieren Sie OpenCV in Cloud9 und führen es in Python aus
Ich möchte APG4b mit Python lösen (nur 4.01 und 4.04 in Kapitel 4)
Moduszeile, wenn Sie den entsprechenden Python-Code in Vim öffnen
Ich möchte Python GUI ausführen, wenn Raspberry Pi startet
Vorsichtsmaßnahmen beim Übergeben von def an sortierte und gruppierte Funktionen in Python? ??
Ich möchte sowohl den Schlüssel als auch den Wert des Python-Iterators verwenden
Wenn Sie einer Variablen in Python einen CSV-Export zuweisen möchten
[Kurztext] Bei Rückgabe in beiden try-Klauseln, außer Klausel und finally-Klausel
Pakete, die MIDI mit Python Midi und Pretty_Midi verarbeiten
Unterschied zwischen list () und [] in Python
Ausgabe 2017 Premium Friday List in Python
Unterschied zwischen == und ist in Python
Zeigen Sie Fotos in Python und HTML an
Sortieralgorithmus und Implementierung in Python
Lassen Sie uns "Python -m Antigravitation" in Python ausführen
Führen Sie den Shell-Befehl / Python in R aus
Verhalten beim Auflisten in Python heapq
Bis Sie Python in Docker einfügen
Bearbeiten Sie Dateien und Ordner in Python
Über Python und Cython dtype
Zuweisungen und Änderungen in Python-Objekten
Machen Sie die Standardausgabe in Python nicht blockierend
Überprüfen und verschieben Sie das Verzeichnis in Python
Hashing von Daten in R und Python
Funktionssynthese und Anwendung in Python