непонятное поведение подпроцесса. Open (cmd, stdout) и os.system (cmd) - PullRequest
0 голосов
/ 19 сентября 2018

Я использую внешнюю команду внутри скрипта Python, используя сначала:

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

, затем я получаю стандартный вывод.

Проблема в том, что результат выполнения этой внешней команды при выполнении ее внутри скрипта не совпадает, если я выполняю ее непосредственно в командной строке.

Я использую тогда 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 несколько буферов ...

...