для Python 2.7+ идиоматический ответ - использовать subprocess.check_output()
Вы должны также обратить внимание на обработку аргументов при вызове подпроцесса, поскольку это может немного сбивать с толку ....
Если args - это просто одна команда без собственных аргументов (или у вас установлено shell=True
), это может быть строка. В противном случае это должен быть список.
например ... чтобы вызвать команду ls
, это нормально:
from subprocess import check_call
check_call('ls')
и это так:
from subprocess import check_call
check_call(['ls',])
однако, если вы хотите передать некоторые аргументы команде shell, вы не можете сделать это:
from subprocess import check_call
check_call('ls -al')
Вместо этого вы должны передать его в виде списка:
from subprocess import check_call
check_call(['ls', '-al'])
функция shlex.split()
иногда может быть полезна для разделения строки на оболочечный синтаксис перед созданием подпроцессов
как это:
from subprocess import check_call
import shlex
check_call(shlex.split('ls -al'))