🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.python
Article #28324

Re: Pytania początkującego cz. 3

#28324
From: khonsu
Date: Tue, 15 Nov 2011 18:01
79 lines
4142 bytes
On Tue, 15 Nov 2011 02:22:49 +0100, hubert depesz lubaczewski  
<depesz@depesz.com> wrote:

> 1. najpierw pytanie praktyczne. parsuję maila przy pomocy klasy/modułu
> email.
> dostałem maila, wyciągam z niego przez mail.get() zawartość nagłówka.
> ale nagłółek jest mime-encodowany.
> znalazłem, że mogę go sobie przez email.header.decode_header()
> zdekodować, ale dostaję z tego listę tupli, np. takich:
> [('Re: Instalacja PostgreSQL / post\xeapy', 'iso-8859-2')]
>
> jak mogę to zamienić na normalny string?
> tych tupli może być więcej, ale w docach nic nie znalazłem więcej.
>
> 2. jak można się połapać w dokumentacji? to pytanie takie bardziej
> ogólne, ale już tłumaczę.
> znalazłem moduł email.
> w docach do niego znalazłem informację o funkcji message_from_file
> fajnie. ale nie jest napisane co ona zwraca (obiekt jakiejś klasy, ale
> jakiej?). no nic. na sieci podpowiedzi, żeby zrobić print repr(obiekt)
> ok. dowiedziałem się, że jest to instancja email.message.Message
> fajnie.
> odpaliłem pythona, zrobiłem import email (taki sam jak mam w swoim
> programie), help( email.message.Message ) - i nie działa.
> znowu - na sieci podpowiedzieli, że muszę zrobić: import email.message,
> ale podobno nie jest regułą, że obcina się ostatni element z nazwy.
>
> tu pytanie: czy jest jakieś miejsce/metoda/algorytm/cokolwiek dzięki
> któremu mając "w ręku" obiekt mogę przeczytać do niego manuala - tzn. do
> jego klasy, bez zgadywania co muszę zaimportować?
>
> wiem, że powyższe brzmi marudnie, sorry, ale pytam całkiem serio - musi
> być przecież jakaś metoda by znaleźć odpowiednie doce, tylko ja jej nie
> widzę/nie znam.
>
> depesz
>


"email" to pakiet (package), natomiast: email.charset, email.encoders  
,email.errors, email.generator, email.header, email.iterators,  
email.message, email.mime, email.parser, email.utils, to konkretne  
moduły/submoduły.

Pierwszy człon to nazwa pakietu, drugi to konkretny muduł/submoduł w tym  
pakiecie email.message.Message to już konkretny obiekt tego modułu, w tym  
przypadku klasa.

Żebyś mógł odwoływać się do tego konkretnego obiektu (Message), musisz do  
lokalnej przestrzeni nazw zaimportować ten konkretny moduł w którym dany  
obiekt się znajduje.

Robiąc tak: "import email.message" importujesz ten moduł, możesz więc  
teraz dowolnie odwoływać się do jego obiektów za pomocą prefiksu będącego  
nazwą modułu, czyli za pomocą "email.message".

Jeśli tego modułu wcześniej nie zaimportujesz to python nie będzie  
wiedział o jaki obiekt ci chodzi i zgłosi "NameError", np:

>>> help(email.message.Message)
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
NameError: name 'email' is not defined

czego należało się spodziewać, jako że zmiennej o takiej nazwie nie ma, w  
tej konkretnej przestrzeni nazw.

możesz też oszczędzić sobie walenia w klawiaturę i importować konkretny  
obiekt tak:

>>> from email.message import Message
>>>help(Message)

co oszczędzi ci konieczności poprzedzania klasy Message nazwą podułu.


Pozdrawiam khonsu.

--- Posted via news://freenews.netfront.net/ - Complaints to news@netfront.net ---
Technical Details
Message-ID: <op.v4z1oowdk6zdlz@5te-dominium>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed1.plix.pl!goblin2!goblin.stu.neva.ru!newsgate.cuhk.edu.hk!news.netfront.net!not-for-mail
References: <9gr8p8-v4r.ln1@depesz.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!plix.pl!newsfeed1.plix.pl!goblin2!goblin.stu.neva.ru!newsgate.cuhk.edu.hk!news.netfront.net!not-for-mail
From: khonsu <fkhonsu@gmail.com>
Newsgroups: pl.comp.lang.python
Subject: Re: Pytania początkującego cz. 3
Date: Tue, 15 Nov 2011 19:01:26 +0100
Organization: Netfront http://www.netfront.net/
Lines: 119
Message-ID: <op.v4z1oowdk6zdlz@5te-dominium>
References: <9gr8p8-v4r.ln1@depesz.com>
NNTP-Posting-Host: 46.113.252.86
Mime-Version: 1.0
X-Trace: adenine.netfront.net 1321380092 73009 46.113.252.86 (15 Nov 2011 18:01:32 GMT)
X-Complaints-To: news@netfront.net
NNTP-Posting-Date: Tue, 15 Nov 2011 18:01:32 +0000 (UTC)
User-Agent: Opera Mail/11.60 (Linux)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit