Я хочу знать, правильно ли закончен код subprocess.call()
без какой-либо ошибки в вызываемой функции. Например, в коде ниже, если путь при условии, не подходит, то команда ls
выдает ошибку, как:Как проверить, правильно ли завершен подпроцесс?
ERROR:No such file or directory.
Я хочу тот же результат будет храниться в виде строки.
import subprocess
path = raw_input("Enter the path")
subprocess.call(["ls","-l",path])
подобный вопрос уже задавался. http://stackoverflow.com/questions/1996518/retrieving-the-output-of-subprocess-call –
@GeorgeSimms: Обычно вывод и статус выхода разные. Достаточно знать код возврата без извлечения подпроцесса 'stdout/stderr, чтобы проверить, правильно ли завершен субпроцесс, например, ненулевой статус выхода часто указывает ошибку (это зависит от подпроцесса), независимо от значения stdout/stderr. – jfs
@JFSebastian автор спрашивает - о том, был ли подпроцесс успешным (что можно определить из фальшивости кода выхода) - выход подпроцесса в stdout/stderr как строку (которую можно получить, вызвав 'по результату Popen) ' subprocess.call' недостаточно, потому что вывод в stdout/stderr невозможен. В противном случае мы могли бы сделать 'something_went_wrong(), если subprocess.call (stuff) else we_are_ok()' –