Не получить ожидаемого результата os.system

Ожидаемый результат в переменной результат - корень. версия: Python 3.6.7 (по умолчанию, 22 октября 2018 г., 11:32:17)

>>> import os
>>> os.system("stat -c '%U' /tmp/test")
    root
    0
>>> result = os.system("stat -c '%U' /tmp/test")
    root
>>> print(result)
    0

Я думаю, что функциональность, которую вы ищете, описана здесь ... stackoverflow.com/questions/4760215/…

Daniel Marchand 17.12.2018 12:43
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
65
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

согласно описанию в ссылке это, os.system() возвращает код выхода команды, а не фактический результат. Вместо этого вы можете использовать модуль подпроцесс.

как я могу использовать это в подпроцессе? пожалуйста, объясни

Jamshy 17.12.2018 12:46

пожалуйста, проверьте примеры по ссылке это

Amit Nanaware 17.12.2018 12:50

Из документов os.system:

On Unix, the return value is the exit status of the process encoded in the format specified for wait()

Ваша команда выполняется без ошибок, поэтому ее статус выхода - 0, что и возвращает system. Если вы хотите получить вывод выполняемой команды, вам необходимо вызвать команду через одну из функций модуля subprocess.

Ответ принят как подходящий

os.system используется только для получения кода возврата, в вашем случае попробуйте использовать subprocess.check_output

from subprocess import check_output
result = check_output(["stat","-c","'%U'","/tmp/test"])
print result
root

Я думаю, что это правильный метод, но показывает ошибку FileNotFoundError: [Errno 2] Нет такого файла или каталога: "stat -c '% U' / tmp / test": "stat -c '% U' / tmp / tes

Jamshy 17.12.2018 12:59

попробуйте сейчас, добавил shell = True

Shrey 17.12.2018 12:59

Другие вопросы по теме