для 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'))
"ntpq -p"
, який є іншою частиною проблема, ніж ви питаєте.