Almacenar configuraciones de usuario en un archivo de texto plus utilizar los métodos de lectura para parsear dicho archivo, es una técnica muy primitiva.
Lo que deberías hacer es SERIALIZAR un objeto (varios objetos que contengan los distintos datos del usuario) a un archivo binario, y cada vez que quieras cargar los datos de un user, deserializas los objetos y seleccionas el objeto que contiene los datos del usuario en cuestión.
Lo más parecido que he encontrado para serializar en python es usando el módulo
pickle, que al parecer no es psoible codificar los datos para una serialización binaria, al menos a mi me genera un archivo de texto plano, pero sigue siendo una idea más elaborada.
Ejemplo:
import pickle, time
# Defino la Class 'UserData', que almacena la config del usuario.
class UserData:
def __init__(self, name, mail, birthday):
self.__name = name
self.__mail = mail
self.__birthday = birthday
def Name(self):
return self.__name
def Mail(self):
return self.__mail
def Birthday(self):
return time.strptime(self.__birthday, '%d %B %Y')
# Instancio la class 'UserData' para 3 usuarios distintos.
user1 = UserData('Elektro', 'ElektroStudios@ElHacker.Net', '8 September 1986')
user2 = UserData('pedrito', None, None)
user3 = UserData('jaimito', None, None)
# Instancio una lista de 'UserData' con los 3 usuarios.
users = [user1, user2, user3]
# Serializo la lista a un archivo.
with open('config.bin', 'wb') as f:
pickle.dump(users, f)
# Deserializo la lista desde el archivo.
with open('config.bin', 'rb') as f:
loadedUsers = pickle.load(f)
# Instancio una lista de 'UserData' cargando los usuarios que tengan 'X' nombre.
userMatches = [user for user in loadedUsers if user.Name() == 'Elektro']
# Muestro la informacion del primer usuario cargado.
print userMatches[0].Name()
print userMatches[0].Mail()
print userMatches[0].Birthday().tm_year
Output:
Elektro
ElektroStudios@ElHacker.Net
1986