[Python-ideas] changing sys.stdout encoding

Rurpy rurpy at yahoo.com
Sat Jun 9 05:47:36 CEST 2012

On 06/07/2012 06:59 PM, Nathan Schneider wrote:
> On Thu, Jun 7, 2012 at 5:14 PM, Rurpy <rurpy-/E1597aS9LQAvxtiuMwx3w at public.gmane.org> wrote:
>> On 06/07/2012 03:45 PM, Nick Coghlan wrote:
>>> level code doesn't want those streams, it needs to
>>> replace them with something else.
>> Yes, this is what the code I googled up does:
>>  import codecs
>>  sys.stdout = codecs.getwriter(opts.encoding)(sys.stdout.buffer)
> What if codecs contained convenience methods for stdin and stdout?
> I.e. the above could be written more simply as
>   import codecs
>   codecs.encode_stdout(opts.encoding)
> This is much more memorable than the current option, and would also
> make life easier when working with fileinput (whose openhook argument
> can be set to control encoding of input *file* streams, but when it
> falls back to stdin this preference is ignored).

How ironic.  In Python2 I hated having to import codecs
and use codecs.open() (the only thing I ever used from 
the codecs module) rather than just having an encoding
parameter on open().  

But seems like might be a reasonable thing to do.
I'm sure there will be opinions. :-).

It's not just sys.stdout though, the same issue exists 
with sys.stdin and sys.stderr so one might want either
three functions, or one function that includes the a
stream as parameter.

More information about the Python-ideas mailing list