Reputation: 477
This is the code that i'm currently using to try to get a new line. Sadly it just rewrites the first line in the program. What is going on? If you can help I will be very thankful.
import itertools
import string
import sys, os, cmd
from datetime import datetime
FMT = '%Y-%m-%d %H:%M:%S'
passwordstried = 0
numbers = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0',]
symbols = ["!","@","#","$","%","^","&","*","(",")","_","-","'",'"',":",";","+","=","[","{","]","}","<",",",">",".","?","/","|","\"","~","`"]
lowercaseletters = ["q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","g","h","j","k","l","z","x","c","v","b","n","m"]
uppercaseletters = ["Q","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","G","H","J","K","L","Z","X","C","V","B","N","M"]
stuff = lowercaseletters + uppercaseletters + numbers + symbols
if (input("Do you have the length of the password?") == 'y'):
lengthstartingvalue = int(input("Password length: "))
else:
lengthstartingvalue = 1
starttime = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(starttime)
starttime = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
for L in range(lengthstartingvalue, len(stuff)+1):
for subset in itertools.combinations_with_replacement(stuff, L):
#print(subset)
password = ''.join(subset)
print(password)
file = open("generatedpasswords.txt","w")
file.write(str(password) + '\n')
passwordstried = passwordstried + 1
if (L>lengthstartingvalue+1):
break
endtime = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
elapsed = datetime.strptime(endtime, FMT) - datetime.strptime(starttime, FMT)
print ('Time elapsed:',elapsed)
print ('Passwords tried:',passwordstried)
file.close()
Upvotes: 0
Views: 171
Reputation: 2698
You have a problem that you are reopening the same file inside of the loop...
file = open("generatedpasswords.txt","w")
for L in range(lengthstartingvalue, len(stuff)+1):
for subset in itertools.combinations_with_replacement(stuff, L):
#print(subset)
password = ''.join(subset)
print(password)
file.write(str(password) + '\n')
passwordstried = passwordstried + 1
if (L>lengthstartingvalue+1):
break
This will reopen the same file again and again and will write the last password to the file ultimately
In case you want to append current password and don't want to lose your previous data then you can use file = open("generatedpasswords.txt","a")
inside the for loop....
Upvotes: 1