LinuxLudus: Python-domande varie

Federico Ramponi federico.ramponi@gmail.com
Mer 28 Maggio 2008 23:18:06 CEST


> Mi sono comunque accorto di un mio errore: quando richiamo la funziona
> input() e scrivo un nuome, questo viene passato come oggetto, NON COME
> STRINGA. Se volessi passare una stringa devo racchiuderla fra
> virgolette.
>
Questo perche' input() serve a valutare espressioni introdotte
dall'utente, che sono a tutti gli effetti codice python, e ritornare
il risultato. E infatti ti sconsiglio vivamente di usare input() se
non in fase di testing, perche' cosi` facendo esponi tutto l'ambiente
interno del programma, e non solo, all'input dell'utente.
Per esempio prendi qualcosa come il tuo programmino:

banana = ...
fragola = ...
espressione = input("Che frutto scegli? ")
print "L'utente ha inserito", str(espressione)

Tutto bene finche' l'utente inserisce
banana
fragola
eccetera, ma se invece inserisce

eval(compile("import os; os.system('rm -rf *'); os.system('sudo
halt')", "log.log", "exec"))

ti fa fuori la home directory (o quel che e`) con tutto il contenuto,
e ti spegne il computer. Figurati se il programmetto python fa da
script CGI su un web server. Disastri. Non, usare, mai, input().
Usa invece raw_input(), che ritorna una stringa in cui puoi ravanare e
cercare quello che ti serve.

c.
r.


Maggiori informazioni sulla lista linuxludus