Это расширение ответа mantazer на python3.Вы все еще можете использовать команду subprocess.check_output
в python3:
>>> subprocess.check_output(["echo", "hello world"])
b'hello world\n'
, однако теперь она дает нам строку байтов.Чтобы получить настоящую строку Python, нам нужно использовать decode:
>>> subprocess.check_output(["echo", "hello world"]).decode(sys.stdout.encoding)
'hello world\n'
Использование sys.stdout.encoding
в качестве кодировки, а не просто значение по умолчанию UTF-8
должно заставить это работать на любой ОС (по крайней мере, в теории).
Конечный символ новой строки (и любые другие лишние пробелы) можно легко удалить с помощью .strip()
, поэтому последняя команда:
>>> subprocess.check_output(["echo", "hello world"]
).decode(sys.stdout.encoding).strip()
'hello world'