Python代码:
filename = open("file.txt", "r")
subprocess.call(["./a.out" , "0-9"]), stdin= fin) #1
subprocess.call(["./a.out, "0123456789"], stdin = fin) #2
这里我想用if语句比较两个命令。 1)我已经分配了不同的变量,并试图比较它,它不起作用。 2)我也试过比较if语句(subprocess ... == subprocess)。
请建议我一些解决方案
非常感谢
答案 0 :(得分:1)
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
调用。 Ex 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()
现在比较返回代码&输出。