Подтвердить что ты не робот

Эквивалент python getoutput() в подпроцессе

Я хочу получить выходные данные из некоторых команд оболочки, таких как ls или df в python script. Я вижу, что commands.getoutput('ls') устарел, но subprocess.call('ls') получит только код возврата.

Я надеюсь, что есть простое решение.

4b9b3361

Ответ 1

Используйте subprocess.Popen:

import subprocess
process = subprocess.Popen(['ls', '-a'], stdout=subprocess.PIPE)
out, err = process.communicate()
print(out)

Обратите внимание, что связывают блоки, пока процесс не завершится. Вы можете использовать process.stdout.readline(), если вам нужен выход до его завершения. Для получения дополнительной информации см. Документацию .