quinta-feira, 7 de junho de 2012

Snippet: Gerar string aleatória em Python

A cada 2 meses eu preciso, por algum motivo, gerar uma string aleatória, e a cada 2 meses eu abro um terminal do python, importo random, string e fico brincando por alguns minutos até chegar a uma solução que me deixe feliz (ou até cansar de brincar mesmo).

Mas dessa vez resolvi achar alguma solução que me parecesse suficientemente aleatória e que eu não precisasse abrir o terminal de novo e achar mais uma solução, pesquisando nas internets, achei um tópico no stackoverflow que me pareceu interessante pois ele usava a função os.urandom que de acordo com a documentação é aleatória o suficiente para uso criptográfico.

Com base no que eu vi no stackoverflow, fiz a seguinte solução:

import os
import string

def generate_random_string(length, stringset=string.ascii_letters+string.digits+string.punctuation):
    '''
    Returns a string with `length` characters chosen from `stringset`
    >>> len(generate_random_string(20) == 20 
    '''
    return ''.join([stringset[i%len(stringset)] \
        for i in [ord(x) for x in os.urandom(length)]])

Nenhum comentário:

Postar um comentário