読者です 読者をやめる 読者になる 読者になる

変な文字で sys.stdout が止まらないようにする

#! python3
import sys
sys.stdout.errors = 'xmlcharrefreplace'  # エラー

とかできるとうれしいのだがエラーになるので、

AttributeError: attribute 'errors' of '_io.TextIOWrapper' objects is not writable

repr(sys.stdout) やら dir(sys.stdout) を参考に自前のTextIOWrapperを作っているのだが、

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,
                              encoding = sys.stdout.encoding,
                              line_buffering = True,
                              errors = 'xmlcharrefreplace')
sys.stdout.mode = 'w'

これでいいのだろうか。

Python3になってこの辺りが変わった(sys.stdout が生の入出力ではなくなった)ので、まだよくわかんないんだよな。