[Python] XMPP e prova di BOT
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
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
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
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
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/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
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
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