Torkoal
Torkoal

Reputation: 477

Can't get new line to work in python?

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

Answers (1)

xor
xor

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

Related Questions