eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPython: pliki tekstowe - różne kodowanie › Re: Python: pliki tekstowe - różne kodowanie
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: Rob Wolfe <r...@s...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: Python: pliki tekstowe - różne kodowanie
    Date: Thu, 02 Jul 2009 22:40:04 +0200
    Organization: Debian GNU/Linux site
    Lines: 63
    Message-ID: <8...@s...pl>
    References: <h2hvke$456$1@news.wp.pl> <h2i7i3$8t4$1@news.wp.pl>
    <0...@h...googlegroups.com>
    NNTP-Posting-Host: ip-79-175-248-34.cable.smsnet.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=iso-8859-2
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1246567197 6724 79.175.248.34 (2 Jul 2009 20:39:57 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Thu, 2 Jul 2009 20:39:57 +0000 (UTC)
    Cancel-Lock: sha1:AuvKBS6jAkyShLluJ3X3hdsKyy0=
    X-User: rw8899
    User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.93 (gnu/linux)
    Xref: news-archive.icm.edu.pl pl.comp.programming:182495
    [ ukryj 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: