我首先在 python 脚本中使用外部命令:
subprocess.Popen(cmd, stdout=subprocess.PIPE)
然后我得到标准输出。
问题是如果我直接在命令行中执行这个外部命令,在脚本内部执行它时的结果是不一样的。
我用 then os.system(cmd)
,但同样的问题。
python中的这条指令是否使用了一些缓冲区?
我如何解释两个结果之间的区别(命令行和脚本内部)。
安装后,我将此工具用作命令行中的本地命令:
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 使用一些缓冲区......