I want to know how to compare multiple lines of a text file to a single variable. I have got it partially working but it only compares to last line of text file
def loginSetup(): global loginSelector global accountInt loginSelector = int(input("Select Action:")) if loginSelector == 1: #login print ("action complete") if loginSelector == 2: #sign up accountInt = int(input("Input 4 Digit Pin:")) while (accountInt >= 9999 or accountInt <= 999): print("ERRORnTry Again") accountInt = int(input("Input 4 Digit Pin:")) accountInt = str(accountInt) with open('Account.txt', 'r') as rf: for line in rf: if (line == str(accountInt)): print("error") with open('Account.txt', 'a') as f: f.write('n') f.write(accountInt) while True: loginSetup()
Advertisement
Answer
That’s because rather than the standard way of writing a line of text followed by a newline, you’re writing the newline first. So the last line of the file doesn’t have a trailing newline (and allows the comparison to succeed there).
In the loop, line
will be some text with a newline at the end (for all but the last line), and str(AccountInt)
will never have a newline. So no match is possible.
You’ll want to strip the newline from your string before comparing.