用python写的两个字典生成器

下面两个是我自己写的字典生成器,代码比较简单,大牛勿笑。

第一个是指定字典的最长和最短,然后盲目生成字典的生成器,包括数字,大小写字母,特殊符号等。

代码如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#*********************************************************
#*     暴力字典生成器                                                                                            *
#*  支持自定位数生成,包括大小写字母、特殊符号和数字                     *
#*  BY:netcat  2012-02-10                        *
#* http://www.netcat.tk                           *
#*********************************************************

import sys,string,itertools

def help():
    print '[usage]: python mydic.py -h or --help to get help\n'
    print '[usage]: python mydic.py mim max outfile\n'
    print '   mim:     mim dic length,must be a number\n'
    print '   max:     max dic length,must be a number\n'
    print 'outfile:    output filename'

def dic():
    chars=string.printable[:-5]
    p=[]
    for i in xrange(min,max+1):
        p.append((itertools.product(chars,repeat=i),))

    return itertools.chain(*p)

def write():
    f=open(file,'a')
    for x in d:
        for y in x:
            f.write("".join(y))
            f.write('\n')

    f.close()
    print 'Done'

while True:
    if len(sys.argv)==4:
        try:
            min=int(sys.argv[1]);max=int(sys.argv[2])
        except:
            help()
            sys.exit(1)
        if min <= max:
            d=dic()
            file=sys.argv[3]
            write()
            sys.exit(0)
        else:
            print 'error:'+sys.argv[2]+'<'+sys.argv[1]
            sys.exit(1)
    elif len(sys.argv)==2:
        if sys.argv[1].lower() == "-h" or sys.argv[1].lower() == "--help":
            help()
            sys.exit(0)
    else:
        help()
        sys.exit(1)
  第二个字典也叫社会工程学字典,是根据name,age,birthday,mail等生成字典的生成器。 代码如下:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#*********************************************************
#*     社会工程学字典生成器                                                                                *
#*  根据name,age,birthday,mail,qq等生成密码                      *
#*  BY:netcat  2012-02-10                        *
#* http://www.netcat.tk                           *
#*********************************************************

import itertools

def input():
    l=[]
    name=raw_input('enter name>')
    l.append(name)
    net_name=raw_input('enter netname>')
    try:
        age=str(int(raw_input('enter age>')))
    except:
        print 'age must be a number.eg:44'
        return input()
    else:
        l.append(age)
    try:
        birthday=str(int(raw_input('enter birthday>')))
    except:
        print 'birthday must be a number.eg:19900304'
        return input()
    else:
        l.append(birthday)
    mail=raw_input('enter mail>')
    l.append(mail)
    try:
        qq=str(int(raw_input('enter qq>')))
    except:
        print 'qq must be number.eg:123321'
        return input()
    else:
        l.append(qq)
    other1=raw_input('enter other1>')
    l.append(other1)
    other2=raw_input('enter other2>')
    l.append(other2)

    return l

def dic():
    p=[]
    for x in xrange(8):
        p.append((itertools.product([i for i in ans],repeat=x),))
    return itertools.chain(*p)

def write():
    file=raw_input('enter dic name>')
    if file == '':
        file='a1.txt'
        print 'create dic file a1.txt'
    f=open(file,'a')
    for x in d:
        for y in x:
            f.write("".join(y))
            f.write('\n')

    f.close()
    print 'Done'

ans=input()    
d=dic()
write()