[Python-ideas] changing sys.stdout encoding (original) (raw)

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.encodestdout(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