Python:
Запись в стандартный поток ошибок
Как это делать:
Для записи в stderr на Python:
import sys
print("Это обычное сообщение.")
sys.stderr.write("Это сообщение об ошибке.\n")
Пример вывода:
Это обычное сообщение.
Это сообщение об ошибке.
Обратите внимание, что, хотя print()
по умолчанию добавляет новую строку, sys.stderr.write()
этого не делает—вам нужно включить \n
, чтобы начать новую строку.
Глубокое погружение
Исторически стандартные потоки были введены в Unix. Их три: стандартный ввод (stdin
), стандартный вывод (stdout
) и стандартная ошибка (stderr
). В Python модуль sys
предоставляет доступ к этим потокам. Хотя stdout
обычно используется для основного вывода программы, stderr
зарезервирован для сообщений об ошибках и диагностики.
Альтернативы sys.stderr.write()
включают использование print()
с аргументом file
:
print("Это сообщение об ошибке.", file=sys.stderr)
Это работает подобным образом, но использует дружественные к пользователю функции print()
. Что касается внутренних механизмов, оба метода в итоге делают системные вызовы записи в соответствующий поток.
Смотрите также
- Документация Python для модуля sys: https://docs.python.org/3/library/sys.html
- Стандартные потоки в Unix: https://ru.wikipedia.org/wiki/Стандартные_потоки
- Обсуждение использования stderr: https://stackoverflow.com/questions/5574702/how-to-print-to-stderr-in-python