Python перенаправляет библиотека C ++ на Tempfile, в то время как он также перенаправляется в ShellPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python перенаправляет библиотека C ++ на Tempfile, в то время как он также перенаправляется в Shell

Сообщение Anonymous »

Я вызываю библиотеку C ++ в своем коде Python, и я хочу перенаправить всю stdout этой библиотеки в временный файл для пост -обработки. (Я знаю, что это плохое решение о дизайне .......) < /p>
Я прочитал несколько аналогичных вопросов и обнаружил, что это можно сделать с помощью перенаправления на уровне дескриптора файла, используя os.dup2 () перенаправить stdout и stderr внешней библиотеки в Python < /p>

Код: Выделить всё

redirect_file = tempfile.TemporaryFile(mode='w+b')
stdout_fd = sys.stdout.fileno()
sys.stdout.close()
os.dup2(redirect_file.fileno(), stdout_fd)
# call C++ library here, capture output in redirect_file
< /code>
Однако я обнаружил, что он работает только в том случае, если сценарий Python выполняется без перенаправления оболочки. С перенаправлением оболочки вывод библиотеки C ++ не будет захвачен Temp File, и поэтому я не могу сделать свою пост -обработку. < /P>
$ python foo.py                         # this works
$ python foo.py > redirected_output     # C++ output will appear in the redirected_output directly
из -за других ограничений мой код должен быть выполнен с перенаправлением в оболочке, поэтому мне нужно решить его в Python.

Подробнее здесь: https://stackoverflow.com/questions/753 ... cted-in-sh
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»