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
And after having read posts like this one,
I added the following line to atelier
:
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.