Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Reading from a file.
#1
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')
Reply
#2
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.
krhoades likes this post
Reply
#3
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')
krhoades likes this post
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#4
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.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
Sad problems with reading csv file. MassiJames 3 560 Nov-16-2023, 03:41 PM
Last Post: snippsat
  Reading a file name fron a folder on my desktop Fiona 4 852 Aug-23-2023, 11:11 AM
Last Post: Axel_Erfurt
  Reading data from excel file –> process it >>then write to another excel output file Jennifer_Jone 0 1,048 Mar-14-2023, 07:59 PM
Last Post: Jennifer_Jone
  Reading a file JonWayn 3 1,059 Dec-30-2022, 10:18 AM
Last Post: ibreeden
  Reading Specific Rows In a CSV File finndude 3 940 Dec-13-2022, 03:19 PM
Last Post: finndude
  Excel file reading problem max70990 1 867 Dec-11-2022, 07:00 PM
Last Post: deanhystad
  Replace columns indexes reading a XSLX file Larry1888 2 951 Nov-18-2022, 10:16 PM
Last Post: Pedroski55
  Failing reading a file and cannot exit it... tester_V 8 1,757 Aug-19-2022, 10:27 PM
Last Post: tester_V
  Reading .csv file doug2019 4 1,659 Apr-29-2022, 09:55 PM
Last Post: deanhystad
  Reading an Input File DaveG 1 1,215 Mar-27-2022, 02:08 AM
Last Post: deanhystad

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020