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