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é'
_______________________________________________
Python mailing list
Python@py.cz
http://www.py.cz/mailman/listinfo/python

Odpovedet emailem