eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPython: pliki tekstowe - różne kodowanie › Re: Python: pliki tekstowe - różne kodowanie
  • Data: 2009-07-02 20:40:04
    Temat: Re: Python: pliki tekstowe - różne kodowanie
    Od: Rob Wolfe <r...@s...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Zbigniew Zagórski <z...@g...com> writes:

    > On 2 Lip, 14:01, "didi" <d...@d...com> wrote:
    >> Użytkownik "didi" <d...@d...com> napisał w
    wiadomościnews:h2hvke$456$1@news.wp.pl...
    >>
    >> > outfile=open("name.txt",'w')
    >> > for file in filenames:
    >> >    text=open(file)
    >> >    lines=text.readlines()
    >> >    outfile.writelines(lines[3:])  #zapisz wszystkie linie począwszy od
    >> > 3-ciej
    >> >    text.close
    >> > outfile.close
    >>
    >> > I problem jaki napotkałem to UnicodeDecodeError: 'charmap' codec can't
    >> > decode byte ... in position ...:character mapt to <undifined>
    >>
    >> Zamiast Pythona 3xx użyłem wersję 2xx, które z defaultu nie konwertuje do
    >> postaci Unicode.
    >
    > Oj wygląda na to, że Python zmierza w złym kierunku ... Szkoda.

    Taki wielgachny wnioch na podstawie tak drobnego nieporozumienia? ;)

    > Przeczytałem twój post jakiś czas temu i zastanawiałem się jak to
    > możliwe...
    > 100 razy pisałem coś podobnego i działało.
    >
    > A tu okazuje się, że dla Pythona NG wszystko to tekst. Brawo... No i
    > brawo

    No chyba po to wymyślono dwa tryby otwarcia pliku:
    1. tekstowy - do czytania właśnie *tekstu*
    2. binarny - do czytania bajtów

    > za stabilne API ... a właśnie przymierzałem się do sprawdzenia py3k,
    > odłożę
    > na nigdy.

    Masz na myśli stabilne API pomiędzy 2.x i 3.x?
    Cały sens powstania wersji 3.x sprowadza się do tego,
    aby nie być zmuszonym wstecznej kompatybilności z 2.x.
    Akurat w kwestii I/O i "bajty vs stringi vs unicode" w 3.x nastąpiły
    bardzo znaczące zmiany:
    http://docs.python.org/3.1/whatsnew/3.0.html#text-vs
    -data-instead-of-unicode-vs-8-bit

    Aczkolwiek nie jakieś znowu rewolucyjne. Model bardzo zbliżony do java'owego.
    W tym konkretnym przypadku, który doprowadził Cię do tak drastycznych
    wniosków wystarczyło zamiast:

    open(file)

    napisać:

    open(file, errors='replace')

    co jest napisane wołami w dokumentacji.
    Java różni się tym, że przy błędnym kodowaniu nie rzuca wyjątku,
    lecz traktuje taką sytuację jako niezdefiniowaną.
    Python dodaje tu dodatkową możliwość kontroli i jeszcze zbiera
    za to cięgi. Echhh... ;)

    RW

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: