Mar-29-2017, 09:50 PM
You open the same file three times, at the same time, all with the same name. Certainly using the same name at the same time is a bad idea, and having them open at the same time makes me nervous. Since you don't need to do it all at once, I would avoid it.
Note that if you use the in operator to check for existing names, and you have the name 'Mary Jane' in the list, you can't create a new user named 'Jane' (because
# check to see if the file exists, and create it if necessary if not os.path.exists(filename): with open(filename, 'w') as file_obj: pass # read the names in with open(filename, 'r') as file_obj: name = file_obj.readlines() for name in names: if prompt_username.lower() in name.lower(): print('Name taken.') break else: # write to the file with open(filename, 'a') as file_obj: file_obj.write(prompt_username + '\n') print('Welcome to a whole new world, {}.'.format(prompt_username))I took the final print out of the with clause because it doesn't need to be there. I figure, when you're done with the file, be done with the file.
Note that if you use the in operator to check for existing names, and you have the name 'Mary Jane' in the list, you can't create a new user named 'Jane' (because
'Jane' in 'Mary Jane'
is True). I'm not sure if that's what you want. If you are trying to avoid the '\n' at the end of the line, I would use:if prompt_username.lower() == name.strip().lower():The strip method will return a string with leading and trailing whitespace (including '\n') removed. The returned string goes in the place of name.strip(), and then can then use the lower method.
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures