View Single Post
  #5 (permalink)  
Old 05-29-2008, 07:39 PM
Siph0n Siph0n is offline
Member
 
Join Date: Apr 2008
Posts: 48
Default

Version 2. It now splits the file into a certain space... currently 100 MB. It is easy to change in the code. Also it times it, so you can alter the code to try and make it faster. I also forgot to close out the file at the end. When it does start a new file, it tells you, and also the "word" it is on. It checks the size of the current file every 1000 "words". I plan to add the ability to restart the program at a certain point next. Suggests and comments are welcome!

Code:
'''
UPDATES:
Forgot to close the file after I opened it.
It now splits the files after a set limit.
It checks the file size after ever 1000 words. Easy to change.

TO DO:
Add in a way to restart the program from where it left off.
'''
import os
import time
numFile = 0
f=open('wordlist-' + str(numFile) + '.txt', 'w')

def xselections(items, n):
    if n==0: yield []
    else:
        for i in xrange(len(items)):
            for ss in xselections(items, n-1):
                yield [items[i]]+ss

# Numbers = 48 - 57
# Capital = 65 - 90
# Lower = 97 - 122
numb = range(48,58)
cap = range(65,91)
low = range(97,123)
choice = 0
while int(choice) not in range(1,8):
    choice = raw_input('''
    1) Numbers
    2) Capital Letters
    3) Lowercase Letters
    4) Numbers + Capital Letters
    5) Numbers + Lowercase Letters
    6) Numbers + Capital Letters + Lowercase Letters
    7) Capital Letters + Lowercase Letters
    : ''') 

choice = int(choice)
poss = []
if choice == 1:
    poss += numb
elif choice == 2:
    poss += cap
elif choice == 3:
    poss += low
elif choice == 4:
    poss += numb
    poss += cap
elif choice == 5:
    poss += numb
    poss += low
elif choice == 6:
    poss += numb
    poss += cap
    poss += low
elif choice == 7:
    poss += cap
    poss += low

bigList = []
for i in poss:
    bigList.append(str(chr(i)))

MIN = raw_input("What is the min size of the word? ")
MIN = int(MIN)
MAX = raw_input("What is the max size of the word? ")
MAX = int(MAX)
MAX_SIZE_MB = 100
MAX_SIZE_BYTES = MAX_SIZE_MB * 1024 * 1024
HOW_OFTEN_CHECK = 1000
count = 0
START_TIME = time.time()
for i in range(MIN,MAX+1):
    for s in xselections(bigList,i):
        count += 1
        f.write(''.join(s) + '\n')
        if count >= HOW_OFTEN_CHECK:
            size = os.path.getsize('wordlist-' + str(numFile) + '.txt')
            if size > MAX_SIZE_BYTES:
                f.close()
                numFile += 1
                f=open('wordlist-' + str(numFile) + '.txt', 'w')
                count = 0
                print 'New File. Current word: ', ''.join(s)

f.close()
END_TIME = time.time()
print 'Time it took to compute files:', END_TIME - START_TIME, 'seconds'
Reply With Quote