[python] Nastavení default kódování print-u (ještě jednou)
zu1234
zu1234 na seznam.cz
Úterý Březen 22 14:38:22 CET 2011
Omlouvám se za vadnou češtinu, zkusím to ještě jednou:
------------------------------------------------------
Měl jsem problém (takový docela základní) jak napsat program
pro windows command-line s výstupem na terminál,
nebo (po přesměrování výstupu) do souboru.
Po přesměrování výstupu do souboru se totiž obsah sys.setdefaultencoding
změní na ascii a printy končí
chybou: 'ascii' codec can't encode characters
1) Vlastní nastavení - reload je nutný
2) Nastavení podle 'směru' výstupu: pokud je výstup přesměrován do
souboru tak cp1250 jinak cp852'
3) Funguje to i po převodu do exe pomocí py2exe
4) Následně fungují správně i výstupy z optparse
Snad to někomu pomůže.
Ale mohl by mi někdo vysvětlit proč to nejde bez reload?
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
reload(sys)
if sys.stdout.isatty():
# Výstup jde na terminál:
sys.setdefaultencoding('cp852')
else:
# Výstup jde do souboru:
sys.setdefaultencoding('cp1250')
print u'šílené'
Další informace o konferenci Python