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.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!new
    s.nask.pl!news.nask.org.pl!goblin1!goblin.stu.neva.ru!postnews.google.com!l31g2
    000yqb.googlegroups.com!not-for-mail
    From: Zbigniew Zagórski <z...@g...com>
    Newsgroups: pl.comp.programming
    Subject: Re: Python: pliki tekstowe - różne kodowanie
    Date: Fri, 3 Jul 2009 00:30:54 -0700 (PDT)
    Organization: http://groups.google.com
    Lines: 103
    Message-ID: <b...@l...googlegroups.com>
    References: <h2hvke$456$1@news.wp.pl> <h2i7i3$8t4$1@news.wp.pl>
    <0...@h...googlegroups.com>
    <8...@s...pl>
    NNTP-Posting-Host: 194.197.79.18
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: quoted-printable
    X-Trace: posting.google.com 1246606254 17123 127.0.0.1 (3 Jul 2009 07:30:54 GMT)
    X-Complaints-To: g...@g...com
    NNTP-Posting-Date: Fri, 3 Jul 2009 07:30:54 +0000 (UTC)
    Complaints-To: g...@g...com
    Injection-Info: l31g2000yqb.googlegroups.com; posting-host=194.197.79.18;
    posting-account=pAMjAgoAAAB7BdHqfnhHGttUpTZHcafi
    User-Agent: G2/1.0
    X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.11)
    Gecko/2009060215 Firefox/3.0.11 GTB5 (.NET CLR
    3.5.30729),gzip(gfe),gzip(gfe)
    Xref: news-archive.icm.edu.pl pl.comp.programming:182500
    [ ukryj nagłówki ]

    On 2 Lip, 22:40, Rob Wolfe <r...@s...pl> wrote:
    > 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? ;)

    No może trochę za wielgachny... Ale i tak trochę mi śmierdzi ... o tym
    niżej

    >
    > > 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:
    > (...)
    > 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-...

    Zgoda ...

    > 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')

    No sorka, to jest odczytywanie z translacją. Całkowicie odpada.

    > 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... ;)

    Przeczytałem o tym wszystkim - po napisaniu postu - i ... oryginalny
    poster pisał coś o tym, że próbował open(...,"rb"), i że też nie
    działa.
    Wygląda na to, że to on nie przeczytał dokumentacji - ani nie
    pochwalił
    się, że odpala to na py3k.

    A wracając do cięgów. Nie siedzę ostatnio w Pythonie - jakoś mi się
    z nim drogi rozeszły ale ... (nie czytałem żadnego flejma na ten temat
    Py3k
    więc opinia jest bardzo "IMHO") i tak uważam, że włożenie Unicode do
    "normalnych" plików - i to domyślnie - jest nie na miejscu. Kodowanie
    I/O
    jest rzeczą wysoce zależną od aplikacji i powinno być używane w sposób
    świadomy a nie gdzieś pod spodem korzystając z aktualnego locale.
    To nie jest sprawa języka tylko projektu biblioteki. Mogli zostawić
    jak było (czyli domyślnie "bytes") bez szkody dla innowacyjności Py3k
    jako całości.

    Z drugiej, strony podział na "text" i "bytes" (czy jak to tam
    było) jest świetnym posunięciem.

    BR,
    ZZ

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

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: