実現したいこと
現在Python上でdllを読み込み、その標準出力をキャプチャしてロギングしたいと考えています。
sys.outputを読み取りたいのですがwbモードで標準出力が開かれており、標準出力を取得して
取り込むことが出来ません。
io.UnsupportedOperation: not readable
このように表示されております。
subprocessを使うというのも考えたのですがそのコードの難読化等が出来ないため、何とか
subprocessを使わず解決したいと考えております。
発生している問題・エラーメッセージ
io.UnsupportedOperation: not readable
該当のソースコード
python
1import sys 2import os 3import tempfile 4 5sys.stdout = tempfile.TemporaryFile('r+b') 6dll = cdll.LoadLibrary(hogehoge.dll') 7for line in iter(sys.stdout.readline, b''): 8 logger.info(line.rstrip().decode(cnf.Proc_Encoding, 'replace'))
試したこと
dupによる標準出力のファイルオブジェクトの複製とfdopenを用いて開き直したが失敗
Win32APIを利用し、標準出力をSetStdHandleでテンポラリで別ファイルに割り当てて取得しようと試みたがこれも失敗
補足情報(FW/ツールのバージョンなど)
OS:Windows10、
PythonVersion:Python 3.6.10 :: Anaconda, Inc.
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/07 23:52