Checking if string exists in file using while loop
I am new to Python and am having trouble with looping while checking strings in a file. For this program, I am checking to see if a username that the user wants to create already exists. If the username already exists in the file, the program prompts the user to enter another username. The loop ends when the user enters a username that is not in the file. Here is the relevant code:
# Prompting for username and password
username = input("Enter your username: ")
password = input("Enter your password: ")
# open password file
f = open("password.txt", "r")
# while username exists in file
while username in f.read():
username = input("Enter your username: ")
f.close()
If I enter a username that exists in the password file, the program does prompt me to enter another username; however, when I enter the same username, the program does not stay in the loop. Any ideas on why this is occurring?
python
add a comment |
I am new to Python and am having trouble with looping while checking strings in a file. For this program, I am checking to see if a username that the user wants to create already exists. If the username already exists in the file, the program prompts the user to enter another username. The loop ends when the user enters a username that is not in the file. Here is the relevant code:
# Prompting for username and password
username = input("Enter your username: ")
password = input("Enter your password: ")
# open password file
f = open("password.txt", "r")
# while username exists in file
while username in f.read():
username = input("Enter your username: ")
f.close()
If I enter a username that exists in the password file, the program does prompt me to enter another username; however, when I enter the same username, the program does not stay in the loop. Any ideas on why this is occurring?
python
Is this all the code or have you given a minimalist version?
– Amit Joki
Nov 20 at 5:53
How do the contents ofpassword.txt
look like?
– user7374610
Nov 20 at 5:54
Thanks everybody!
– CMoney
Nov 20 at 23:28
add a comment |
I am new to Python and am having trouble with looping while checking strings in a file. For this program, I am checking to see if a username that the user wants to create already exists. If the username already exists in the file, the program prompts the user to enter another username. The loop ends when the user enters a username that is not in the file. Here is the relevant code:
# Prompting for username and password
username = input("Enter your username: ")
password = input("Enter your password: ")
# open password file
f = open("password.txt", "r")
# while username exists in file
while username in f.read():
username = input("Enter your username: ")
f.close()
If I enter a username that exists in the password file, the program does prompt me to enter another username; however, when I enter the same username, the program does not stay in the loop. Any ideas on why this is occurring?
python
I am new to Python and am having trouble with looping while checking strings in a file. For this program, I am checking to see if a username that the user wants to create already exists. If the username already exists in the file, the program prompts the user to enter another username. The loop ends when the user enters a username that is not in the file. Here is the relevant code:
# Prompting for username and password
username = input("Enter your username: ")
password = input("Enter your password: ")
# open password file
f = open("password.txt", "r")
# while username exists in file
while username in f.read():
username = input("Enter your username: ")
f.close()
If I enter a username that exists in the password file, the program does prompt me to enter another username; however, when I enter the same username, the program does not stay in the loop. Any ideas on why this is occurring?
python
python
asked Nov 20 at 5:45
CMoney
32
32
Is this all the code or have you given a minimalist version?
– Amit Joki
Nov 20 at 5:53
How do the contents ofpassword.txt
look like?
– user7374610
Nov 20 at 5:54
Thanks everybody!
– CMoney
Nov 20 at 23:28
add a comment |
Is this all the code or have you given a minimalist version?
– Amit Joki
Nov 20 at 5:53
How do the contents ofpassword.txt
look like?
– user7374610
Nov 20 at 5:54
Thanks everybody!
– CMoney
Nov 20 at 23:28
Is this all the code or have you given a minimalist version?
– Amit Joki
Nov 20 at 5:53
Is this all the code or have you given a minimalist version?
– Amit Joki
Nov 20 at 5:53
How do the contents of
password.txt
look like?– user7374610
Nov 20 at 5:54
How do the contents of
password.txt
look like?– user7374610
Nov 20 at 5:54
Thanks everybody!
– CMoney
Nov 20 at 23:28
Thanks everybody!
– CMoney
Nov 20 at 23:28
add a comment |
3 Answers
3
active
oldest
votes
When you run f.read()
Python will read the file in and then continue onto the next line of the file in the next iteration. It wont go back to the top of the file. So it exits the loop since the username
in the next line of the file is either an empty string or another name. To fix this you could use a context manager like so:
# Prompting for username and password
username = input("Enter your username: ")
password = input("Enter your password: ")
# read in the file data
with open('password.txt') as f:
data = f.read()
# while username exists in file
while username in data:
username = input("Enter your username: ")
Then depending on how the data is structured in your .txt file then you can call split()
on data
if it's using a new line.
This worked! Thank you!
– CMoney
Nov 20 at 23:27
@CMoney stackoverflow.com/help/someone-answers"Please do not add a comment on your question or on an answer to say "Thank you". "
, etc. Vote and/or accept. thanks.
– davedwards
Nov 21 at 4:13
add a comment |
There is no condition to check whether the new username is in the file or not.
Maybe an easier way to do this would be to use the following approach?
username = input("Enter your username: ")
password = input("Enter your password: ")
# open password file
f = open("password.txt", "r")
data = f.read()
# while username exists in file
while username in data:
new = input("Enter your username: ")
if new in data:
continue
else:
break
username = new
f.close()
Thanks for the feedback!
– CMoney
Nov 20 at 23:27
add a comment |
This is because you are using f.read() in the while condition.
f.read reads the whole content of the file at once and there's nothing else to read from file, leading to the end of while loop.
If you want to check for usernames in the file, I'd suggest you create a list of usernames that you read from the file and use it in your while loop for checking.
If your file has contents:
username1, username2, ...
You can do
listOfUsernames = f.read().split(',')
and then use this for checking in while loop.
Thanks for the help!
– CMoney
Nov 20 at 23:27
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53386920%2fchecking-if-string-exists-in-file-using-while-loop%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
When you run f.read()
Python will read the file in and then continue onto the next line of the file in the next iteration. It wont go back to the top of the file. So it exits the loop since the username
in the next line of the file is either an empty string or another name. To fix this you could use a context manager like so:
# Prompting for username and password
username = input("Enter your username: ")
password = input("Enter your password: ")
# read in the file data
with open('password.txt') as f:
data = f.read()
# while username exists in file
while username in data:
username = input("Enter your username: ")
Then depending on how the data is structured in your .txt file then you can call split()
on data
if it's using a new line.
This worked! Thank you!
– CMoney
Nov 20 at 23:27
@CMoney stackoverflow.com/help/someone-answers"Please do not add a comment on your question or on an answer to say "Thank you". "
, etc. Vote and/or accept. thanks.
– davedwards
Nov 21 at 4:13
add a comment |
When you run f.read()
Python will read the file in and then continue onto the next line of the file in the next iteration. It wont go back to the top of the file. So it exits the loop since the username
in the next line of the file is either an empty string or another name. To fix this you could use a context manager like so:
# Prompting for username and password
username = input("Enter your username: ")
password = input("Enter your password: ")
# read in the file data
with open('password.txt') as f:
data = f.read()
# while username exists in file
while username in data:
username = input("Enter your username: ")
Then depending on how the data is structured in your .txt file then you can call split()
on data
if it's using a new line.
This worked! Thank you!
– CMoney
Nov 20 at 23:27
@CMoney stackoverflow.com/help/someone-answers"Please do not add a comment on your question or on an answer to say "Thank you". "
, etc. Vote and/or accept. thanks.
– davedwards
Nov 21 at 4:13
add a comment |
When you run f.read()
Python will read the file in and then continue onto the next line of the file in the next iteration. It wont go back to the top of the file. So it exits the loop since the username
in the next line of the file is either an empty string or another name. To fix this you could use a context manager like so:
# Prompting for username and password
username = input("Enter your username: ")
password = input("Enter your password: ")
# read in the file data
with open('password.txt') as f:
data = f.read()
# while username exists in file
while username in data:
username = input("Enter your username: ")
Then depending on how the data is structured in your .txt file then you can call split()
on data
if it's using a new line.
When you run f.read()
Python will read the file in and then continue onto the next line of the file in the next iteration. It wont go back to the top of the file. So it exits the loop since the username
in the next line of the file is either an empty string or another name. To fix this you could use a context manager like so:
# Prompting for username and password
username = input("Enter your username: ")
password = input("Enter your password: ")
# read in the file data
with open('password.txt') as f:
data = f.read()
# while username exists in file
while username in data:
username = input("Enter your username: ")
Then depending on how the data is structured in your .txt file then you can call split()
on data
if it's using a new line.
edited Nov 20 at 6:11
answered Nov 20 at 6:04
kstullich
213318
213318
This worked! Thank you!
– CMoney
Nov 20 at 23:27
@CMoney stackoverflow.com/help/someone-answers"Please do not add a comment on your question or on an answer to say "Thank you". "
, etc. Vote and/or accept. thanks.
– davedwards
Nov 21 at 4:13
add a comment |
This worked! Thank you!
– CMoney
Nov 20 at 23:27
@CMoney stackoverflow.com/help/someone-answers"Please do not add a comment on your question or on an answer to say "Thank you". "
, etc. Vote and/or accept. thanks.
– davedwards
Nov 21 at 4:13
This worked! Thank you!
– CMoney
Nov 20 at 23:27
This worked! Thank you!
– CMoney
Nov 20 at 23:27
@CMoney stackoverflow.com/help/someone-answers
"Please do not add a comment on your question or on an answer to say "Thank you". "
, etc. Vote and/or accept. thanks.– davedwards
Nov 21 at 4:13
@CMoney stackoverflow.com/help/someone-answers
"Please do not add a comment on your question or on an answer to say "Thank you". "
, etc. Vote and/or accept. thanks.– davedwards
Nov 21 at 4:13
add a comment |
There is no condition to check whether the new username is in the file or not.
Maybe an easier way to do this would be to use the following approach?
username = input("Enter your username: ")
password = input("Enter your password: ")
# open password file
f = open("password.txt", "r")
data = f.read()
# while username exists in file
while username in data:
new = input("Enter your username: ")
if new in data:
continue
else:
break
username = new
f.close()
Thanks for the feedback!
– CMoney
Nov 20 at 23:27
add a comment |
There is no condition to check whether the new username is in the file or not.
Maybe an easier way to do this would be to use the following approach?
username = input("Enter your username: ")
password = input("Enter your password: ")
# open password file
f = open("password.txt", "r")
data = f.read()
# while username exists in file
while username in data:
new = input("Enter your username: ")
if new in data:
continue
else:
break
username = new
f.close()
Thanks for the feedback!
– CMoney
Nov 20 at 23:27
add a comment |
There is no condition to check whether the new username is in the file or not.
Maybe an easier way to do this would be to use the following approach?
username = input("Enter your username: ")
password = input("Enter your password: ")
# open password file
f = open("password.txt", "r")
data = f.read()
# while username exists in file
while username in data:
new = input("Enter your username: ")
if new in data:
continue
else:
break
username = new
f.close()
There is no condition to check whether the new username is in the file or not.
Maybe an easier way to do this would be to use the following approach?
username = input("Enter your username: ")
password = input("Enter your password: ")
# open password file
f = open("password.txt", "r")
data = f.read()
# while username exists in file
while username in data:
new = input("Enter your username: ")
if new in data:
continue
else:
break
username = new
f.close()
edited Nov 20 at 6:08
answered Nov 20 at 5:58
Rupaksh Paul
488
488
Thanks for the feedback!
– CMoney
Nov 20 at 23:27
add a comment |
Thanks for the feedback!
– CMoney
Nov 20 at 23:27
Thanks for the feedback!
– CMoney
Nov 20 at 23:27
Thanks for the feedback!
– CMoney
Nov 20 at 23:27
add a comment |
This is because you are using f.read() in the while condition.
f.read reads the whole content of the file at once and there's nothing else to read from file, leading to the end of while loop.
If you want to check for usernames in the file, I'd suggest you create a list of usernames that you read from the file and use it in your while loop for checking.
If your file has contents:
username1, username2, ...
You can do
listOfUsernames = f.read().split(',')
and then use this for checking in while loop.
Thanks for the help!
– CMoney
Nov 20 at 23:27
add a comment |
This is because you are using f.read() in the while condition.
f.read reads the whole content of the file at once and there's nothing else to read from file, leading to the end of while loop.
If you want to check for usernames in the file, I'd suggest you create a list of usernames that you read from the file and use it in your while loop for checking.
If your file has contents:
username1, username2, ...
You can do
listOfUsernames = f.read().split(',')
and then use this for checking in while loop.
Thanks for the help!
– CMoney
Nov 20 at 23:27
add a comment |
This is because you are using f.read() in the while condition.
f.read reads the whole content of the file at once and there's nothing else to read from file, leading to the end of while loop.
If you want to check for usernames in the file, I'd suggest you create a list of usernames that you read from the file and use it in your while loop for checking.
If your file has contents:
username1, username2, ...
You can do
listOfUsernames = f.read().split(',')
and then use this for checking in while loop.
This is because you are using f.read() in the while condition.
f.read reads the whole content of the file at once and there's nothing else to read from file, leading to the end of while loop.
If you want to check for usernames in the file, I'd suggest you create a list of usernames that you read from the file and use it in your while loop for checking.
If your file has contents:
username1, username2, ...
You can do
listOfUsernames = f.read().split(',')
and then use this for checking in while loop.
answered Nov 20 at 6:09
Hardhik
367
367
Thanks for the help!
– CMoney
Nov 20 at 23:27
add a comment |
Thanks for the help!
– CMoney
Nov 20 at 23:27
Thanks for the help!
– CMoney
Nov 20 at 23:27
Thanks for the help!
– CMoney
Nov 20 at 23:27
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53386920%2fchecking-if-string-exists-in-file-using-while-loop%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Is this all the code or have you given a minimalist version?
– Amit Joki
Nov 20 at 5:53
How do the contents of
password.txt
look like?– user7374610
Nov 20 at 5:54
Thanks everybody!
– CMoney
Nov 20 at 23:28