Gustavo Niemeyer wrote: > Given the fact that files have an 'encoding' parameter, and that > any unicode strings with characters not in the 0-127 range will > raise an exception if being written to files, isn't it reasonable > to respect the 'encoding' attribute whenever writing data to a > file? In general, files don't have an encoding parameter - sys.stdout is an exception. The reason why this works for print and not for write is that I considered "print unicodeobject" important, and wanted to implement that. file.write is an entirely different code path, so it doesn't currently consider Unicode objects; instead, it only supports strings (or, more generally, buffers). > This difference may become a really annoying problem when trying to > internationalize programs, since it's usual to see third-party code > dealing with sys.stdout, instead of using 'print'. Apparently, it isn't important enough that somebody had analysed this, and offered a patch. In any case, it would be quite unreliable to pass unicode strings to .write even *if* .write supported .encoding, since most files don't have .encoding. Even sys.stdout does not always have .encoding - only when it is a terminal, and only if we managed to find out what the encoding of the terminal is. Regards, Martin
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4