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.
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