无法理解的行为子进程。Popen(cmd,stdout)和os.system(cmd)

时间:2018-09-18 21:16:17

标签: python subprocess os.system datalog clingo

我首先在python脚本中使用外部命令:

subprocess.Popen(cmd, stdout=subprocess.PIPE)

然后我得到标准输出。

问题在于,如果我直接在命令行中执行此外部命令,则在脚本内部执行该命令时的结果将不同。

然后我使用os.system(cmd),但是同样的问题。

Python中的此指令是否使用某些缓冲区?

如何解释两个结果(命令行和脚本内部)之间的区别。

安装后,我正在使用此工具作为来自comman行的本地命令:

https://potassco.org/clingo/run/

我使用一些文件作为输入:

edge("s1","s3").

edge("s2","s4").

edge("s3","s4").

path(X,Y) :- edge(X,Y). % x and y are strings

path(X,Z) :- path(X,Y), path(Y,Z).

:- path(X,Y), path(Y,X). %cyclic path.

要做到这一点,该工具将生成如下模型:

edge("s1","s3") edge("s2","s4") edge("s3","s4") path("s1","s3") path("s2","s4") path("s3","s4") path("s1","s4")
SATISFIABLE

当我在python脚本中调用命令时,它不会计算所有模型,但会生成不完整的模型。这个问题仅出现在需要计算大型模型的大型示例中。这就是为什么我问这个命令:subprocess.Popen和os.system是否使用一些缓冲区...

0 个答案:

没有答案