Sunday, March 15, 2015¶
Redirecting non-ascii stdout to a file¶
repairdata now supports positional arguments: if arguments
are specified, then they are expected to be full names of the
models to be tested.
I got UnicodeEncodeError when I wanted to redirect the output of
repairdata to a file. For example, in
lino.projects.min2 the following command gives quite some
output, including Non-ASCII text:
$ python manage.py repairdata
And it works, at least if the
LANG is correctly set. But
redirecting that output to a file does not work:
$ python manage.py repairdata > tmp.txt
import sys, codecs, locale sys.stdout = codecs.getwriter(locale.getpreferredencoding())(sys.stdout)
That is: importing
atelier now automatically adds a codecs
writer to sys.stdout. I then discovered that as a consequence,
atelier.doctest_utf8 is no longer needed.
Result is that I can now do the above redirection. And everything else seems to work.