Python Forum

Full Version: Reading from a file.
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello everyone. I am a newbie to the forum and Python.
I am trying to read a single word from a text file in the same directory
as my python code. The code is meant to read the word from the text file and
store it in a variable. It then gets input from the user to compare to the variable read
from the text file. If the the two match, it is supposed to print "Access granted".
The problem is that the program never outputs "Access granted", even when inputting the correct password, the
output printed is "Access denied". The elif and else conditions work as expected. When I debug the code in in VSPro
I don't get any errors. I am stumped. Being a newb, I'm sure I'm missing something that should be obvious.
Thanks in advance to anyone who can help me sort this one out.




#!/usr/bin/python
f = open ("SecretPassword.txt", "r") 
a = f.read()

print("Enter your password.")
password = input()

if password == a:
    print("Access granted")

elif password == '12345':
    print('That password is one that idiots put on their luggage.')

else:
    print('Access denied')
Please try to use meaningful words, not so important now, but as your programs grow larger, and for others who read your code, it will become important.

when reading a file in 'r' mode, each read is delimited by a newline so you get a sentence, not a word.
you can extract any word by splitting into a list:


mylist = a.read().strip().split()
word1 = mylist[0] # remember lists are zero based.
try printing mylist to see how sentence is split.
if your file has indeed only one word - you need to strip the new line

with open("SecretPassword.txt", "r") as f:
    stored_password = f.read().strip()

password = input("Enter your password:")
 
if password == stored_password:
    print("Access granted")
elif password == '12345':
    print('That password is one that idiots put on their luggage.')
else:
    print('Access denied')
if multiple passwords in the file

if your file has indeed only one word - you need to strip the new line

with open("SecretPassword.txt", "r") as f:
    stored_passwords = f.read().splitlines()

password = input("Enter your password:")
 
if password in stored_passwords: # check that password is in stored_passwords list
    print("Access granted")
elif password == '12345':
    print('That password is one that idiots put on their luggage.')
else:
    print('Access denied')
Thank you very much for all your help.
I think I've got it now. You guys are awesome!
I'll definitely do a better job naming variables and commenting before I
post again.