[Python] aituo per programmino: creazione password ed md5sum

2008-09-19 Per discussione Valerio Pachera
Ciao a tutti, è un po' che non metto mano a python e sono comunque un novellino.
Ho una necessità pratica da usare come esercizio per imparare qualcosa
di più di python:

volgio fare un piccolo script per generare delle password ed il relativo md5.
Come input deve prendere i paramteri "numero di password da creare",
"il nome del file" dove salvarle ed il "separatore" usato per separare
le password e l'md5 nel file che verrà scritto.

Ho creato lo script ma NON SO COME SCRIVERE SU UN FILE IL RISULTATO.
ecco lo script:

--
# coding=utf-8
import md5
import random

def genpasswd (lenght=8):
passwd=""
for num in random.sample(range(0,10), lenght):
passwd += str(num)
return passwd

def genlist (records, separator):
c = 0
passwd = ""
md5sum = ""
record = []
passwd_list = []
while c < records:
new_passwd = genpasswd()
new_md5 = md5.new (new_passwd).hexdigest() + separator
new_passwd += separator
record = [new_passwd, new_md5]
passwd_list.append (record)
c += 1
return passwd_list

def genfile (filename, records=1, separator=';'):
passwd_list = genlist(records, separator)
print "devo scrivere i seguenti record sul file ", filename
for record in passwd_list:
#scrivi i record su un file di testo
print record


genfile ("prova", 4)


Mi potete cortesemente aiutare a completare questo script?
Aggiungete naturalmente i vostri suggerimenti per migliorarlo.



Googlando ho trovato qualche spunto

def dsvgen(filename,separator=':'):
"""generates a list of values for each line in a dsv file

>>> for row in dsvgen('myfilename'): print row
"""
print "script executed"
inpfile=open(filename)
for line in inpfile:
yield line.strip().split(separator)
inpfile.close()


Qua ho trovato dei metodi che hanno a che fare con la scrittura dei file
http://docs.python.it/html/lib/bltin-file-objects.html
ma non spiega quando usarli. Immagino ad esempio che vadano usato dopo
aver aperto il file come sopra...ma non l'ho ancora letto da nessuna
parte.

Questo è il modulo per il calcolo dell'md5sum usato nello script
http://www.python.org/doc/current/lib/module-md5.html
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] aituo per programmino: creazione password ed md5sum

2008-09-19 Per discussione Alessandro Dentella
On Fri, Sep 19, 2008 at 02:39:54PM +0200, Valerio Pachera wrote:
> Ciao a tutti, è un po' che non metto mano a python e sono comunque un 
> novellino.
> Ho una necessità pratica da usare come esercizio per imparare qualcosa
> di più di python:
> 
> volgio fare un piccolo script per generare delle password ed il relativo md5.
> Come input deve prendere i paramteri "numero di password da creare",
> "il nome del file" dove salvarle ed il "separatore" usato per separare
> le password e l'md5 nel file che verrà scritto.
> 
> Ho creato lo script ma NON SO COME SCRIVERE SU UN FILE IL RISULTATO.
> ecco lo script:
> 
> --
> # coding=utf-8
> import md5
> import random
> 
> def genpasswd (lenght=8):
> passwd=""
> for num in random.sample(range(0,10), lenght):
> passwd += str(num)
> return passwd
> 
> def genlist (records, separator):
> c = 0
> passwd = ""
> md5sum = ""
> record = []
> passwd_list = []
> while c < records:
> new_passwd = genpasswd()
> new_md5 = md5.new (new_passwd).hexdigest() + separator
> new_passwd += separator
> record = [new_passwd, new_md5]
> passwd_list.append (record)
> c += 1
> return passwd_list
> 
> def genfile (filename, records=1, separator=';'):
> passwd_list = genlist(records, separator)
> print "devo scrivere i seguenti record sul file ", filename
> for record in passwd_list:
> #scrivi i record su un file di testo
> print record

una roba così? oltre ad 'open' che dovresti vedere documentata da tante
parti, nota l'uso di join, operatore di una stringa

def genlist (records, separator):
c = 0
passwd = ""
md5sum = ""
record = []
passwd_list = []
while c < records:
new_passwd = genpasswd()
new_md5 = md5.new (new_passwd).hexdigest()
passwd_list.append(separator.join([new_passwd, new_md5]))
c += 1
return passwd_list

def genfile (filename, records=10, separator=';'):
passwd_list = genlist(records, separator)
f = open(filename, 'w')
#scrivi i record su un file di testo
f.write("\n".join(passwd_list))
f.write('\n')
f.close()
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] aituo per programmino: creazione password ed md5sum

2008-09-19 Per discussione simone
Valerio Pachera ha scritto:

> def genfile (filename, records=1, separator=';'):
> passwd_list = genlist(records, separator)
> print "devo scrivere i seguenti record sul file ", filename
> for record in passwd_list:
> #scrivi i record su un file di testo
> print record

E' sufficiente:

file_da_scrivere = open(nome_del_file, 'w')
file_da_scrivere.write(record)
file_da_scrivere.close()

--
Simone
Chiacchiera con i tuoi amici in tempo reale! 
 http://it.yahoo.com/mail_it/foot/*http://it.messenger.yahoo.com 

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


[Python] pygoocanvas: riferimenti -create/resize/move- di rettangoli

2008-09-19 Per discussione Simone
Salve,

 mi sono da poco immerso nel geometrico mondo di pygoocanvas
ponendomi, almeno per ora, l'ambizioso obiettivo di disegnare,
ridimensionare e spostare rettangoli :-p

Tentando di accumulare una base di conoscenze minime per partire ho
cercato di recuperare quanta più documentazione possibile, fermandomi
purtroppo alla "sola" guida di riferimento delle API
locale(ubuntu#8.04: /usr/share/gtk-doc/html/pygoocanvas/index.html)
che  non mi è parsa particolarmente esemplificativa per un
novellino...

Rubando idee agli esempi trovati in rete, sono arrivato a disegnare,
con qualche dubbio, il mio primo rettangolo.

* Uno dei miei dubbi

consultando la guida di riferimento delle API leggo:

rect = goocanvas.Rect(x=100, y=100, width=200, height=100,
stroke_color="red", fill_color="blue",
line_width=5.0)

Noto che manca ogni riferimento all'argomento "parent=". Argomento
presente in ogni altro esempio da me trovato e che ho incluso nel
codice di esempio che accodo a questa mail. Le prove/riprove fatte, mi
hanno portato a pensare che "parent" sia un elemento *necessario* ma
non ho trovato riferimenti che mi chiariscano cosa sia e come si debba
correttamente usare.

* Il secondo scoglio che vorrei superare è quello di capire come
ridimensionare un rettangolo in fase di creazione. Il mio intento era
in sintesi di:

1) Creare un piccolo(1x1 pixel) rettangolo collegato a un evento
"on_mouse_press".
2) Modificare la dimensione del rettangolo creato sfruttando "on_motion_notify".
3) Terminare il disegno del rettangolo con "on_button_release".

* L'ultimo scoglio resterà poi quello di spostare il rettangolo creato
trascinandolo con il mouse.

Qualcuno sarebbe così gentile da suggerirmi qualche riferimento utile
o del codice?

Grazie in anticipo :-),
  Simone

ps.
Accodo il codice a cui sto lavorando:

---python-code-begin---

#!/usr/bin/python

import gtk
import goocanvas

def main_quit(*arg):
gtk.main_quit()

class ProvaCanvas(object):
"""
prova canvas
"""
def __init__(self):
# Dimensioni canvas
self.canvas_width=400
self.canvas_height=400

self.movement = False

def on_button_press(self, widget, event):
"""
"""
self.movement = True
print ' x=%s, y=%s\n' % (event.x, event.y)

self.button_press_x=event.x
self.button_press_y=event.y

def on_button_release(self, widget, event):
"""
"""
self.movement = False
print 'button released'

width = event.x-self.button_press_x
height = event.y-self.button_press_y

self.draw_rect(event, width, height)
self.draw_text(event, text='prova')

def on_motion_notify(self, widget, event):
if self.movement:
print event.x, event.y


def draw_rect(self, event, width=5, height=5, fill='blue'):
"""
Disegno rettangolo

"""
x1 = self.button_press_x
y1 = self.button_press_y
x2 = event.x
y2 = event.y

if x2 > x1:
width = x2-x1
x=x1
else:
width = x1-x2
x=x2
if y2 > y1:
y=y1
height = y2-y1
else:
y=y2
height = y1-y2

print 'rect (\n'
print '\t x1: %s \n\t y1: %s \n' % (x1, y1)
print '\t x2: %s \n\t y2: %s' % (x2, y2)
print '\n\t width: %s \n\t height: %s\n\t)' % (width, height)

if (width > 0) and (height > 0):
self.rect = goocanvas.Rect(x=x,
   y=y,
   width=width,
   height=height,
   fill_color=fill,
   parent=self.root)
else:
print "Dimensioni nulle, non disegno"

def draw_text(self, event, text="no text", font="Arial 10", width=100):
"""
add text
"""
x1 = self.button_press_x
y1 = self.button_press_y
x2 = event.x
y2 = event.y

if x2 > x1:
width = x2-x1
x = x1
else:
width = x1-x2
x = x2
if y2 > y1:
y = y1
else:
y = y2

msg = goocanvas.Text(text=text, font=font, x=x, y=y, width=width)

self.root.add_child(msg)

def main(self):

win = gtk.Window()
win.connect('destroy', main_quit)
win.set_title('Prova Canvas')

vbox = gtk.VBox()
win.add(vbox)
vbox.show()

label = gtk.Label("Prova canvas. disegna rettangoli")
vbox.pack_start(label, expand=False)
label.show()

# Creo canvas
self.canvas = goocanvas.Canvas()
self.canvas.set_size_request(self.canvas_width,self.canvas_height)
self.canvas.set_bounds(0, 0, self.canvas_width,self.canvas_

Re: [Python] pygoocanvas: riferimenti -create/resize/move- di rettangoli

2008-09-19 Per discussione Gian Mario Tagliaretti
On Fri, Sep 19, 2008 at 5:55 PM, Simone <[EMAIL PROTECTED]> wrote:
> Salve,

ciao Simone,

> Tentando di accumulare una base di conoscenze minime per partire ho
> cercato di recuperare quanta più documentazione possibile, fermandomi
> purtroppo alla "sola" guida di riferimento delle API
> locale(ubuntu#8.04: /usr/share/gtk-doc/html/pygoocanvas/index.html)
> che  non mi è parsa particolarmente esemplificativa per un
> novellino...

Quello in effetti è un reference manual e quindi spiega solamente il
funzionamento delle API, se mai avrò tempo lo implementerò con
maggiori dettagli.

> Rubando idee agli esempi trovati in rete, sono arrivato a disegnare,
> con qualche dubbio, il mio primo rettangolo.

Ho fatto una caterva di esempi e tu li cerchi in rete? :(

http://svn.gnome.org/viewvc/pygoocanvas/trunk/demo/

oppure sulla tua macchina dovrebbero essere in:

/usr/share/doc/python-pygoocanvas/examples/

> * Uno dei miei dubbi
>
> consultando la guida di riferimento delle API leggo:
>
> rect = goocanvas.Rect(x=100, y=100, width=200, height=100,
>stroke_color="red", fill_color="blue",
>line_width=5.0)
>
> Noto che manca ogni riferimento all'argomento "parent=". Argomento
> presente in ogni altro esempio da me trovato e che ho incluso nel
> codice di esempio che accodo a questa mail. Le prove/riprove fatte, mi
> hanno portato a pensare che "parent" sia un elemento *necessario* ma
> non ho trovato riferimenti che mi chiariscano cosa sia e come si debba
> correttamente usare.

L'argomento parent si aspetta un goocanvas.Group, di default viene
creato un gruppo alla creazione del canvas canvas.get_root_item(),
l'item ritornato dal metodo è appunto il gruppo da passare a parent,
nulla ti vieta però di mettere un item all'interno di un altro gruppo
successivamente all creazione con item.set_parent(group) o ancora
group.add_child(item)

> * Il secondo scoglio che vorrei superare è quello di capire come
> ridimensionare un rettangolo in fase di creazione. Il mio intento era
> in sintesi di:
>
> 1) Creare un piccolo(1x1 pixel) rettangolo collegato a un evento
> "on_mouse_press".
> 2) Modificare la dimensione del rettangolo creato sfruttando 
> "on_motion_notify".
> 3) Terminare il disegno del rettangolo con "on_button_release".
>
> * L'ultimo scoglio resterà poi quello di spostare il rettangolo creato
> trascinandolo con il mouse.
>
> Qualcuno sarebbe così gentile da suggerirmi qualche riferimento utile
> o del codice?

guarda l'esempio:
/usr/share/doc/python-pygoocanvas/examples/simple_demo/demo.py

e tutti gli altri import.

ciao
-- 
Gian Mario Tagliaretti
GNOME Foundation member
[EMAIL PROTECTED]
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python