[python] Nastavení default kódování print-u

zu1234 zu1234 na seznam.cz
Úterý Březen 22 11:26:40 CET 2011


M=ECl jsem probl=E9m (takov=FD docela z=E1kladn=ED) jak napsat program
pro windows command-line s v=FDstupem na termin=E1l,
nebo (po p=F8esm=ECrov=E1n=ED v=FDstupu) do souboru.

Po p=F8esm=ECrov=E1n=ED v=FDstupu do souboru se toti=BE obsah sys.setdefa=
ultencoding=20
zm=ECn=ED na ascii a printy kon=E8=ED
chybou: 'ascii' codec can't encode characters

1) Vlastn=ED nastaven=ED - reload je nutn=FD
2) Nastaven=ED podle 'sm=ECru' v=FDstupu: pokud je v=FDstup p=F8esm=ECrov=
=E1n do=20
souboru tak cp1250 jinak cp852'
3) Funguje to i po p=F8evodu do exe pomoc=ED py2exe
4) N=E1sledn=EC funguj=ED spr=E1vn=EC i v=FDstupy z optparse

Snad to n=ECkomu pom=F9=BEe.

Ale mohl by mi n=ECkdo vysv=ECtlit pro=BE to nejde bez reload?

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
reload(sys)

if sys.stdout.isatty():
     # V=FDstup jde na termin=E1l:
     sys.setdefaultencoding('cp852')
else:
     # V=FDstup jde do souboru:
    sys.setdefaultencoding('cp1250')

print u'=B9=EDlen=E9'





Další informace o konferenci Python