call
не фиксирует вывод. Он просто возвращает код возврата процесса. Если оба равны 0, сравнение всегда успешно.
Вам нужно check_output
вместо:
output1 = subprocess.check_output(["./a.out" , "0-9"]), stdin= fin) #1
output2 = subprocess.check_output(["./a.out", "0123456789"], stdin = fin) #2
if output1 == output2:
# do smth
check_output
возвращает результат, только если команда завершается с нулевым кодом возврата. Если это не так, вам придется использовать subprocess.Popen
и читать вывод вручную, или в python 3.5+ общий вызов suprocess.run
. Например, с Popen
:
p1 = subprocess.Popen(["./a.out" , "0-9"]), stdin= fin, stdout=subprocess.PIPE) #1
p2 = subprocess.Popen(["./a.out", "0123456789"], stdin = fin, stdout=subprocess.PIPE) #2
output1 = p1.stdout.read()
output2 = p2.stdout.read()
rc1 = p1.wait()
rc2 = p2.wait()
Теперь сравните коды возврата и выходы.