subprocess.check_output проблема с вводом текста в виде файла - PullRequest
0 голосов
/ 15 апреля 2020

У меня следующая проблема (в Sage / Python3). Я пытаюсь решить проблему сб. Что не так? Почему <(...) не работает в Python / Sage? Это работает в терминале. Вы можете установить minisat: sudo apt install minisat

ВХОД:

import subprocess
subprocess.check_output(['minisat', '<(p cnf 5 3\n1 -5 4 0\n-1 5 3 4 0\n-3 -4 0)'])

ВЫХОД:

CalledProcessError                        Traceback (most recent call last)
<ipython-input-187-f3a2aa4cf4ee> in <module>()
      1 import subprocess
----> 2 subprocess.check_output(['minisat', '<(p cnf 5 3\n1 -5 4 0\n-1 5 3 4 0\n-3 -4 0)'])

/home/calc/SageMath/local/lib/python3.7/subprocess.py in check_output(timeout, *popenargs, **kwargs)
    393 
    394     return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
--> 395                **kwargs).stdout
    396 
    397 

/home/calc/SageMath/local/lib/python3.7/subprocess.py in run(input, capture_output, timeout, check, *popenargs, **kwargs)
    485         if check and retcode:
    486             raise CalledProcessError(retcode, process.args,
--> 487                                      output=stdout, stderr=stderr)
    488     return CompletedProcess(process.args, retcode, stdout, stderr)
    489 

CalledProcessError: Command '['minisat', '<(p cnf 5 3\n1 -5 4 0\n-1 5 3 4 0\n-3 -4 0)']' returned non-zero exit status 1.
...