Python Glossary English

все Python 3osфункция

os.popen

os — процессы

Открывает канал к команде оболочки: возвращает файловый объект для чтения её вывода или записи ввода.

Синтаксис

os.popen(...)

Это обёртка над subprocess.Popen с shell=True: строка команды идёт в оболочку, и данные пользователя в ней открывают путь к внедрению команд. Метод close() возвращает None при успехе, иначе закодированный статус — на Unix его переводят через waitstatus_to_exitcode. Ошибка команды не поднимает исключение; для проверок удобнее subprocess.run(..., check=True).

Примеры

import os
print(os.popen('echo hello').read().strip())   # → hello
stream = os.popen('echo hello')   # канал открыт на чтение вывода команды
print(stream.read() == 'hello\n')   # → True — в конце вывода остаётся перевод строки
print(stream.close())   # → None — команда завершилась с кодом 0
print(os.popen('exit 3').close())   # → ненулевой статус: на Unix 768 (3 << 8), на Windows 3

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности