Что является эквивалентом Python 3 sys.stdout.fileno () в Python 2 - PullRequest
1 голос
/ 08 октября 2019

Я работаю над кодом в Python 2.7. Я использую очень специфическую библиотеку, написанную частично на C с API Python. Эта библиотека использует printf для вывода на стандартный вывод. Я хотел бы подавить это. Я уже нашел этот вопрос: Как запретить печатать совместно используемую библиотеку C на stdout в python? Для всех предоставленных ответов используется sys.stdout.fileno () . Когда я запускаю свой код, я получаю:

original_stdout_fd = sys.stdout.fileno()
AttributeError: 'FlushingStringIO' object has no attribute 'fileno'

Я подозреваю, что проблема в том, что я использую Python 2.7. Верны ли мои предположения и есть ли способ добиться этого с помощью Python 2.7?

1 Ответ

0 голосов
/ 08 октября 2019

Проблема заключалась в том, что sys.stdout был заменен на FlushingStringIO библиотекой: https://github.com/flexible-atomic-code/fac. Это также как-то зависит от этой детали и прерывается в противном случае. Поскольку разумной альтернативы библиотеке нет, в этом случае нет способа подавить вывод stdout.

...