Теперь я понимаю вашу проблему. Текстовый файл просто сохраняет простые данные, поэтому вы не можете создать файл, который будет писаться так, как если бы это был файл Python, с определением переменной, и ожидать, что при повторном чтении файла все эти переменные будут инициализированы. Python будет только читать данные и назначать их переменной, которая будет содержать весь текст, который вы изначально записали в этот файл.
Итак, подводя итог, вы обрабатываете текстовый файл как файл python и ожидаете, что python выполнит текстовый файл и создаст переменную.
Но это так не работает. Вы должны хранить данные в файле, похожем на базу данных (или в самой базе данных), затем читать их и посредством анализа данных извлекать переменные, которые вы ранее записали в текстовый файл.
Вы можете сделать это вручную, что не очень приятно, или вы можете использовать модуль Python под названием Pickle, который обрабатывает почти все, что вы написали бы сами, поэтому вам нужно будет использовать только этот модуль в своем коде.
Если вы ищете модуль Pickle в Google, веб-сайт Python.org предоставляет очень хороший пример его использования:
#Pickle Example
# Save a dictionary into a pickle file.
import pickle
favorite_color = { "lion": "yellow", "kitty": "red" }
pickle.dump( favorite_color, open( "save.p", "wb" ) )
# Load the dictionary back from the pickle file.
favorite_color = pickle.load( open( "save.p", "rb" ) )
# favorite_color is now { "lion": "yellow", "kitty": "red" }
Итак, как бы вы использовали это в своем коде? Это легко:
# RegOrLog
import pickle # new line!
RegOrLog = raw_input('[Register/Log]:') # why str()?
# register the user detail
if RegOrLog in('r', 'reg', 'register'):
reguser = raw_input('username:') # raw_input gives string by default, if you want other data type then you do have to convert it.
regpass = raw_input('password:')
regage = int(raw_input('age:'))
reggender =raw_input('gender:')
# creating file for the user
data = {"username": reguser, "password": regpass, "age": regage, "gender": reggender}
pickle.dump( data, open( "whatever_file_name", "wb" ) )
RegOrLog = 'log'
###login as a user###
if RegOrLog in('l','log','login'):
loguser = raw_input('Login username:')
regpass = raw_input('password:')
#registered user#
data = pickle.load( open( "whatever_file_name", "rb" ) )
if regpass == data["password"]:
print 'Welcome', loguser
print 'You are', gender
print 'You are', age,'years old'
person
Community
schedule
20.09.2015