Эквивалент python getoutput() в подпроцессе
Я хочу получить выходные данные из некоторых команд оболочки, таких как ls
или df
в python script. Я вижу, что commands.getoutput('ls')
устарел, но subprocess.call('ls')
получит только код возврата.
Я надеюсь, что есть простое решение.
Ответы
Ответ 1
Используйте subprocess.Popen:
import subprocess
process = subprocess.Popen(['ls', '-a'], stdout=subprocess.PIPE)
out, err = process.communicate()
print(out)
Обратите внимание, что связывают блоки, пока процесс не завершится. Вы можете использовать process.stdout.readline(), если вам нужен выход до его завершения. Для получения дополнительной информации см. Документацию .
Ответ 2
Для Python >= 2.7 используйте subprocess.check_output()
.
http://docs.python.org/2/library/subprocess.html#subprocess.check_output