[Python] XMPP e prova di BOT

2010-07-06 Per discussione Vittorio Zuccala'
Ciao a tutti,
sto facendo qualche esperimento sul protocollo XMPP con il modulo xmpppy.
In particolare sto cercando di testare il seguente script dopo
l'installazione del modulo suddetto:
http://xmpppy.sourceforge.net/examples/bot.py

Il modulo si connette correttamente, dal mio client vedo l'utente-bot
online ma appena provo a mandargli un comando si sconnette dicendo:

if text.find('  ')+1:
AttributeError: 'NoneType' object has no attribute 'find'

Sinceramente non riesco a comprendere il problema.
Se tolgo le seguenti righe:

if text.find(' ')+1: command,args=text.split(' ',1)

else: command,args=text,''
cmd=command.lower()

e le sostituisco con un laconico:

cmd='HELP'

il bot funziona ma ovviamente risponde sempre nel medesimo modo...
Qualche idea del problema?
Qualcuno ha già provato questo modulo/script?

Grazie
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] XMPP e prova di BOT

2010-07-06 Per discussione Valerio Turturici
Il giorno 06 luglio 2010 17.39, Vittorio Zuccala' 
vittorio.zucc...@gmail.com ha scritto:

 Ciao a tutti,
 sto facendo qualche esperimento sul protocollo XMPP con il modulo xmpppy.
 In particolare sto cercando di testare il seguente script dopo
 l'installazione del modulo suddetto:
 http://xmpppy.sourceforge.net/examples/bot.py

 Il modulo si connette correttamente, dal mio client vedo l'utente-bot
 online ma appena provo a mandargli un comando si sconnette dicendo:

 if text.find('  ')+1:
 AttributeError: 'NoneType' object has no attribute 'find'

 Sinceramente non riesco a comprendere il problema.
 Se tolgo le seguenti righe:

 if text.find(' ')+1: command,args=text.split(' ',1)


 else: command,args=text,''
 cmd=command.lower()

 e le sostituisco con un laconico:

 cmd='HELP'

 il bot funziona ma ovviamente risponde sempre nel medesimo modo...
 Qualche idea del problema?
 Qualcuno ha già provato questo modulo/script?


 Questa linea è uguale a None, da qui l'errore.

text=mess.getBody()

-- 
Valerio Turturici
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] XMPP e prova di BOT

2010-07-06 Per discussione Vittorio Zuccala'
Il giorno 06 luglio 2010 17.44, Valerio Turturici 
turturici.vale...@gmail.com ha scritto:


  Questa linea è uguale a None, da qui l'errore.

 text=mess.getBody()



Ops... Sto dando sfoggio della mia ignoranza...
Dato che non sono molto pratico del tipo unicode... come posso dirgli: se
stringa è none allora...
Ho provato con

if text='None' ...

ma non funziona :-(
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] XMPP e prova di BOT

2010-07-06 Per discussione Marco Mariani
On Tue, 2010-07-06 at 17:54 +0200, Vittorio Zuccala' wrote: 

 Dato che non sono molto pratico del tipo unicode... come posso dirgli:
 se stringa è none allora...

se e' None, non e' una stringa. None e' un tipo a parte.


 Ho provato con
 
 if text='None' ...

if text is None





Il contenuto e gli allegati di questo messaggio sono strettamente 
confidenziali, e ne sono vietati la diffusione, la riproduzione e l'uso non 
autorizzato. Il suo contenuto non costituisce impegno da parte della Società 
salvo accordo scritto tra quest'ultima ed il destinatario. Qualora il presente 
messaggio Le fosse pervenuto per errore, La preghiamo di comunicare 
immediatamente al mittente l'errata ricezione e di distruggere quanto ricevuto 
(compresi i file allegati) senza farne copia.
Qualsivoglia utilizzo non autorizzato del contenuto di questo messaggio 
costituisce violazione dell'obbligo di non rivelare il contenuto della 
corrispondenza tra altri soggetti, salvo più grave illecito, ed espone il 
responsabile alle relative conseguenze.

This e-mail (and any attachment(s)) is strictly confidential and for use only 
by intended recipient(s). Any use, distribution, reproduction or disclosure by 
any other person is strictly prohibited. The content of this e-mail does not 
constitute a commitment by the Company except where provided for in a written 
agreement between this e-mail addressee and the Company. If you are not an 
intended recipient(s), please notify the sender promptly and destroy this 
message and its attachments without reading or saving it in any manner.
Any non authorized use of the content of this message constitutes a violation 
of the obligation to abstain from learning of the correspondence among other 
subjects, except for more serious offence, and exposes the person responsible 
to the relevant consequences.

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] variabili memoria

2010-07-06 Per discussione Filippo Dal Bosco -
Premessa sto iniziando a studiare python per hobby, unico altro
linguaggio che ho usato moltissimi anni fa è stato db3 e clipper
( quindi niente oggetti).
Pur usando abitualmente linux sto facendo i primi esperimenti con
PythonWin che al momento mi sembra abbastanza comodo, ma ho il segunte
problema:

se lancio in pythonWin il banale script
--
class Cappuccetto:
def Nonna(self):
print Class Cappuccetto Abcd
Lupo=Cappuccetto() 
Cappuccetto.Nonna(Lupo)
# oppure
Lupo.Nonna()
print str(id(Lupo)) + id Lupo=Capucetto
Lupo=sfigato
print str(id(Lupo)) +  id Lupo Sfigato
--
funziona

se lo modifico (in maniera scorretta)

class Cappuccetto:
def Nonna(self):
print Class Cappuccetto Abcd
Lupo=Cappuccetto() 
Cappuccetto.Nonna(Lupo)
# oppure
Lupo.Nonna()
print str(id(Lupo)) + id Lupo=Capucetto
Lupo=sfigato
print str(id(Lupo)) +  id Lupo Sfigato

funziona

Se chiudo PythonWin e  lo rilancio NON funziona e dice che  Lupo non
esiste.

Questo vuol dire che Lupo è rimasto in memoria dopo il primo script
corretto ed ha permesso al secondo script scorretto di funzionare.
Infatti per verificare ho aggiunto id(Lupo)

Questo mi incasina lo studio di Python perchè se  faccio delle prove
con script leggermente diversi rischio di non capire se realmente
funzionano o meno.

Domada c' è un modo di distruggere le variabili?
Basterebbe mettere alla fine di ogni script la loro distruzione  per
risolvere il problema.

grazie


-- 
Filippo
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] variabili memoria

2010-07-06 Per discussione Marco Beri
2010/7/6 Filippo Dal Bosco - filippo.dalbo...@libero.it

 Premessa sto iniziando a studiare python per hobby, unico altro
 linguaggio che ho usato moltissimi anni fa è stato db3 e clipper
 ( quindi niente oggetti).
 Pur usando abitualmente linux sto facendo i primi esperimenti con
 PythonWin che al momento mi sembra abbastanza comodo, ma ho il segunte
 problema:

 se lancio in pythonWin il banale script


Prova a premere ctrl-F6 tra una prova e l'altra (menu` Shell/Shell Restart).

Ciao.
Marco.

-- 
http://thinkcode.tv/gratis - Capire in 15 minuti cosa può fare Python
http://stacktrace.it - Aperiodico di resistenza informatica
http://python.thinkcode.tv - Videocorso di Python
http://beri.it - Blog di una testina di vitello
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] variabili memoria

2010-07-06 Per discussione Daniele Varrazzo
Ciao Filippo,

On Tue, 6 Jul 2010 18:06:33 +0200, Filippo Dal Bosco -
filippo.dalbo...@libero.it wrote:

 Pur usando abitualmente linux sto facendo i primi esperimenti con
 PythonWin che al momento mi sembra abbastanza comodo, ma ho il segunte
 problema:
 
 se lancio in pythonWin il banale script
 ...
 funziona
 
 se lo modifico (in maniera scorretta)
 ...
 funziona
 
 Se chiudo PythonWin e  lo rilancio NON funziona e dice che  Lupo non
 esiste.
 
 Questo vuol dire che Lupo è rimasto in memoria dopo il primo script
 corretto ed ha permesso al secondo script scorretto di funzionare.
 Infatti per verificare ho aggiunto id(Lupo)
 
 Questo mi incasina lo studio di Python perchè se  faccio delle prove
 con script leggermente diversi rischio di non capire se realmente
 funzionano o meno.
 
 Domada c' è un modo di distruggere le variabili?
 Basterebbe mettere alla fine di ogni script la loro distruzione  per
 risolvere il problema.

È un problema dell'ambiente interattivo: la soluzione è quella di non
usare l'ambiente interattivo per testare gli script.

Tieni una shell di fianco al prompt interattivo: quando modifichi lo
script, lancialo da riga di comando e verifica cosa si rompe lì, in un
ambiente sempre pulito. Poi puoi sempre eseguire lo stesso script in
interattivo per giocare con gli elementi creati, ma casomai dopo che l'hai
fatto girare una volta nella shell per verificare che non ci siano errori
banali come una variabile mancante.

Poi più in là questa tecnica verrà sostituita dallo scrivere una unit test
per esercitare le funzioni che usi, ma se per il momento stai solo
studiando e sporchettando, tralascia pure. Metto le mani avanti perché
presto qualcuno ti dirà USA UNA UNIT TEST!!!. Beh, sì, certo, ma con
calma... anche dopo :)

Comunque, almeno Idle, un comando che cancella la memoria ce l'ha:
praticamente la finestra è un processo separato dalla shell sottostante e
con una combinazione di tasti (ctrl-f6? non mi ricordo, comunque c'è nei
menu) permette di killare quella shell e di ripartire fresco, senza
chiudere la finestra. Magari questa feature ce l'ha anche PythonWin.

Se di solito usi Linux, ti suggerisco di lasciar perdere studiare Python
con windows. In Linux il normale prompt interattivo di Python, e ancora
meglio un prompt con gli steroidi tipo iPython, sono molto più semplici da
usare del python.exe fatto girare in cmd.exe, e la shell di linux non
soffre del problema che ricordo avevano sia Idle che PythonWin, ovvero che
sbattono tutto l'output in memoria, bloattando e progressivamente andando
sempre più lenti. E se per errore fai il print di una lista di un milione
di item, non c'è altra soluzione che killarli... questo merita chi
reinventa la console :D

Divertiti, a presto.

-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] variabili memoria

2010-07-06 Per discussione Emanuele Rampichini
Se vuoi rimanere nell'ambito della shell interattiva ti può tornare utile la
funzione builtin:

dir()

che mostra la lista dei nomi nello scope corrente.

E la funzione:

del(nome)

per eliminare variabili.

Piccolo esempio:

 dir()
['__builtins__', '__doc__', '__name__', '__package__']
 nome = pippo
 dir()
['__builtins__', '__doc__', '__name__', '__package__', 'nome']
 del nome
 dir()
['__builtins__', '__doc__', '__name__', '__package__']

Ciao,

Emanuele

Il giorno 06 luglio 2010 18.06, Filippo Dal Bosco - 
filippo.dalbo...@libero.it ha scritto:

 Premessa sto iniziando a studiare python per hobby, unico altro
 linguaggio che ho usato moltissimi anni fa è stato db3 e clipper
 ( quindi niente oggetti).
 Pur usando abitualmente linux sto facendo i primi esperimenti con
 PythonWin che al momento mi sembra abbastanza comodo, ma ho il segunte
 problema:

 se lancio in pythonWin il banale script
 --
 class Cappuccetto:
def Nonna(self):
print Class Cappuccetto Abcd
 Lupo=Cappuccetto()
 Cappuccetto.Nonna(Lupo)
 # oppure
 Lupo.Nonna()
 print str(id(Lupo)) + id Lupo=Capucetto
 Lupo=sfigato
 print str(id(Lupo)) +  id Lupo Sfigato
 --
 funziona

 se lo modifico (in maniera scorretta)
 
 class Cappuccetto:
def Nonna(self):
print Class Cappuccetto Abcd
Lupo=Cappuccetto()
Cappuccetto.Nonna(Lupo)
 # oppure
Lupo.Nonna()
 print str(id(Lupo)) + id Lupo=Capucetto
 Lupo=sfigato
 print str(id(Lupo)) +  id Lupo Sfigato

 funziona

 Se chiudo PythonWin e  lo rilancio NON funziona e dice che  Lupo non
 esiste.

 Questo vuol dire che Lupo è rimasto in memoria dopo il primo script
 corretto ed ha permesso al secondo script scorretto di funzionare.
 Infatti per verificare ho aggiunto id(Lupo)

 Questo mi incasina lo studio di Python perchè se  faccio delle prove
 con script leggermente diversi rischio di non capire se realmente
 funzionano o meno.

 Domada c' è un modo di distruggere le variabili?
 Basterebbe mettere alla fine di ogni script la loro distruzione  per
 risolvere il problema.

 grazie


 --
 Filippo
 ___
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/mailman/listinfo/python

___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python