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
  Help with reading json file hhchenfx 5 316 Jul-07-2021, 01:58 PM
Last Post: hhchenfx
  [Solved] Reading every nth line into a column from txt file Laplace12 7 506 Jun-29-2021, 09:17 AM
Last Post: Laplace12
  help with project of reading and searching big log file korenron 6 275 Jun-24-2021, 01:57 PM
Last Post: korenron
  Helps with reading csv file - 3 methods hhchenfx 4 497 May-13-2021, 04:15 AM
Last Post: buran
  Subprocess.Popen() not working when reading file path from csv file herwin 13 1,173 May-07-2021, 03:26 PM
Last Post: herwin
  find the header location in a .bin file without reading the whole file at a time SANJIB 0 482 Mar-05-2021, 04:08 PM
Last Post: SANJIB
  Reading a csv file Led_Zeppelin 2 658 Feb-26-2021, 05:48 AM
Last Post: buran
  reading a csv file Led_Zeppelin 3 853 Feb-19-2021, 02:16 PM
Last Post: Led_Zeppelin
  Code not reading http link from .txt file (Beginner level) plarrip 3 582 Dec-17-2020, 11:33 PM
Last Post: bowlofred
  reading json file DrBrownStats 1 516 Nov-25-2020, 09:00 AM
Last Post: Larz60+

Forum Jump:

User Panel Messages

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