Sujet: Python.. on s'y met..
26/03/2006 @ 23:43:09: cauet: Python.. on s'y met..
Vilà, y'en fallait un.

Un bouquin à lire absolument: http://www.ulg.ac.be/cifen/inforef/swi/python.htm
La partie python de Developpez: http://python.developpez.com/
La doc officielle: http://docs.python.org/
Installeur Windows : http://www.python.org/ftp/python/2.4.2/python-2.4.2.msi
Des forms pour Windows : http://www.wxpython.org/screenshots.php
L'IDE Eric http://www.die-offenbachs.de/detlev/eric3-screenshots.html
L'IDE Boaconstructor http://boa-constructor.sourceforge.net/Screenshots/

Je vais regarder dès que je peux pour intégrer Python à Apache..

Et si Philfr pouvais nous mettre le nom des softs qui permettent de compiler le python pour le rendre executable sous windows.. ce serait ça en plus..
27/03/2006 @ 00:00:21: philfr: Python.. on s'y met..
Je ne connais (plus) rien à Windows et je ne veux (plus) rien en savoir.
Mais py2exe est sans doute ce que tu cherches. :wink:
27/03/2006 @ 00:25:48: philfr: Python.. on s'y met..
Une autre référence de très grande qualité, mais en anglais:

Dive into Python : http://diveintopython.org/
30/03/2006 @ 10:07:08: Jean-Christophe: Python.. on s'y met..
J'ai une simple question.
J'ai pas encore fini mes recherches, mais bon...

Comment on fait une fonction?
Par exemple (dans mon language à moi)

Print process(10)

Function process(number)
for i = 1 to number do
process = a + process
next
End Function

Ca nous donnerait "aaaaaaaaaa"
30/03/2006 @ 10:27:46: Tokiros: Python.. on s'y met..
facile ^^
def process(number):
res = ''
for i in range(number):
res = res + 'a'
return res

print process(10)


Y'a moyen de faire ca en une ligne, mais on va commencer simple :wink:
30/03/2006 @ 10:36:42: philfr: Python.. on s'y met..
Attention: il faut indenter le code dans la fonction. Il n'y a pas de begin/end/{/}.

Un conseil: toujours utiliser des espaces pour indenter, ou alors que tes tabs, mais le mix entre les deux est assez imprévisible.
03/04/2006 @ 14:03:50: Jean-Christophe: Python.. on s'y met..
J'ai encore une question.
Comment faire pour retrouver le second élément d'une liste.

Je vous explique...
Dans une string qui contient "xxx yyy", je voudrais retrouver yyy.
Je fais un string.split qui me renvoie ['xxx', 'yyy'] mais je ne suis pas plus avancé.
Merci :smile:
03/04/2006 @ 14:16:21: Jean-Christophe: Python.. on s'y met..
Autre chose encore.
Je voudrais récupérer des infos sur une page web.
Pour le moment, je sais récupérer la source html. C'est déjà pas mal.
Ce qui serait super, c'est de pouvoir récupérer l'équivament d'un copy-paste de la page web. Donc, pas la source, mais le résultat.
Je n'ai besoin que de texte, pas d'image, de tableau, rien de tout celà.

Merci :smile:
03/04/2006 @ 19:57:24: Tokiros: Python.. on s'y met..
J'ai encore une question.
Comment faire pour retrouver le second élément d'une liste.

Je vous explique...
Dans une string qui contient "xxx yyy", je voudrais retrouver yyy.
Je fais un string.split qui me renvoie ['xxx', 'yyy'] mais je ne suis pas plus avancé.
Merci :smile:


Je suis pas sur d'avoir compris ta question, mais si c'est acceder a différents éléments d'une liste, c'est assez simple :


>>> l = ['xxx','yyy','zzz']
>>> print l[0]
'xxx'
>>> print l[1]
'yyy'
>>> print l[2]
'zzz'
03/04/2006 @ 20:41:58: Jean-Christophe: Python.. on s'y met..
c'est ca, super, merci :smile:

Pour l'html, tu as une idée?
04/04/2006 @ 14:14:21: Tokiros: Python.. on s'y met..
Pour l'html, tu as une idée?

C'est un peu plus compliqué...

regarde la :
http://www.boddie.org.uk/python/HTML.html

un truc dans le genre devraile faire


import sgmllib
import urllib

class MyParser(sgmllib.SGMLParser):
"A simple parser class."

def parse(self, s):
"Parse the given string 's'."
self.descriptions = ''
self.feed(s)
self.close()

return self.descriptions

def handle_data(self, data):
"Handle the textual 'data'."

self.descriptions += data

f = urllib.urlopen("http://www.python.org")
s = f.read()
myparser = MyParser()
print myparser.parse(s)
f.close()


Mais attention, j'ai pas testé...
04/04/2006 @ 14:24:35: Jean-Christophe: Python.. on s'y met..
merci, je vais essayer tout à l'heure!
04/04/2006 @ 15:27:11: Altar: Python.. on s'y met..
Attention: il faut indenter le code dans la fonction. Il n'y a pas de begin/end/{/}.

Un conseil: toujours utiliser des espaces pour indenter, ou alors que tes tabs, mais le mix entre les deux est assez imprévisible.


Une des plus grosses bêtises de python d'ailleurs...

Sinon pour intégrér pyhton à apache pourquoi ne pas lancer les scripts en cgi plutôt que d'essayer d'utiliser un module qui de toute façon n'existera plus dans la version 6 (et qui n'aurait jamais du exister). Autant prendre les bonnes habitudes depuis le début.
04/04/2006 @ 16:21:21: Tokiros: Python.. on s'y met..
Si c'est l'indentation une des plus grosses bétises de python, moi je pense le contraire, je trouve que c'est une tres bonne chose de devoir indenter proprement son code
13/04/2006 @ 10:55:08: philfr: Python.. on s'y met..
Tokiros> 100% d'accord avec toi. Mais c'est la critique numéro 1 que l'on entend, en général de la part des non programmeurs python...

Altar> c'est quoi pour toi les autres plus grosses bétises de Python ?

Pour zion qui a des problèmes avec PHP et les headers d'e-mails, voici comment Python s'occupe de la chose:


>>> from email.MIMEText import MIMEText
>>> from email.Header import Header
>>> msg=MIMEText("Bonjour à tous.\nÀ bientôt\n","plain","iso-8859-15")
>>> msg['Subject'] = Header("Méééé ! voilà un subject à encoder", "iso-8859-15")
>>> msg['To'] = Header('Jean Dupont <jdupont@plouc.be>')
>>> print msg.as_string()
Content-Type: text/plain; charset="iso-8859-1"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Subject: =?iso-8859-1?q?M=E9=E9=E9=E9_!_voil=E0_un_subject_=E0_encoder?=
To: Jean Dupont <jdupont@plouc.be>

Bonjour =E0 tous.
=C0 bient=F4t

>>>

13/04/2006 @ 11:48:08: ovh: Python.. on s'y met..
Altar voulait peut-être parler du fait que mixer espaces et tabulations ne marche pas bien.
Et bon, moi j'indente toujours mon code, mais je trouve plus clair de délimiter les blocs par des accolades :oh:
13/04/2006 @ 11:53:14: zion: Python.. on s'y met..
philfr> Je ne suis pas programmeur python, mais une indentation foireuse devrait être sanctionnée par le compilo, je suis bien d'accord. Ou au moins balancer des warnings, parce que c'est illisible un code mal indenté :oh: (mais je me contenterais d'un warning quand même)

Ah mais évidemment pour le mail, tu passes par un encodage explicite. Pour ma part, tout est en full unicode dans Kelare, si PHP pouvait proposer des APIs qui fonctionnent avec l'unicode, je n'aurais pas ce "problème".

Je pourrais pour la forme l'encoder moi même, je te l'accorde, mais j'ai pas envie que le sujet soit bousillé sur un client qui ne le supporte pas, et je dois dire que j'ai la flemme de devoir contourner un problème qui devrait être réglé avec une fonction mail qui serait en unicode :oh:
13/04/2006 @ 12:09:32: philfr: Python.. on s'y met..
Quand tu dis unicode, tu dois vouloir dire UTF-8, UTF-16, ou UCS-4... Implicitement ou explicitement, il faut convertir l'encodage que tu utilises pour l'unicode vers l'encodage acceptable pour un header ou un body MIME.

Et tu as bien plus de chances de tomber sur un mailer qui ne saura rien faire avec ton header unicode que sur un mailer qui ne comprend pas un header encodé selon RFC2047...

Mais on est d'accord: il faudrait un API "set_default_encoding" qui influence tous les APIs de génération d'emails.
Il y a sûrement un moyen trivial de faire ça en Python... :grin:
13/04/2006 @ 12:19:36: zion: Python.. on s'y met..
C'est en UTF-16 en effet, mais je repasse tout en UTF-8 pour l'affichage vu que même niveau browser, c'est pas toujours évident un UTF-16 (ni pour les mailers, déjà l'UTF-8 ils ont du mal).

Quand j'envoie un mail, il est justement explicitement en UTF-8 cfr l'encoding, donc pas besoin que je fasse quoi que ce soit. Le sujet devrait d'ailleurs aussi être traité comme étant de l'UTF8 si on reste logique avec le :

Content-Type: text/plain; charset=UTF-8

C'est pas le cas, ok, mais ce serait logique que le sujet soit dans le même charset que le content et qu'on doive pas l'encoder :oh:
13/04/2006 @ 13:36:32: philfr: Python.. on s'y met..
ce serait logique que le sujet soit dans le même charset que le content et qu'on doive pas l'encoder :oh:


Sans doute, mais la structure header/body des e-mails (RFC822) existait avant MIME et avant content-type, et ne connaissait que l'US-ASCII 7 bit.
Ajouter des headers pour spécifier l'encodage du body était possible et a permis MIME.
Mais ajouter des pre-headers pour spécifier l'encodage des headers...???

Tu peux d'ailleurs t'estimer heureux que beaucoup de MTA (postfix/exim/...) et de mailers acceptent des contenus sur 8 bits dans les bodies. Normalement, tous les encodages qui nécessitent le 8ème bit doivent être convertis en quoted-printable ou base-64.

Mais on s'éloigne de python... Si tu splittais le topic ?
Retour