Python ver información de un fichero

Iniciado por Joe Fraddy, 1 Marzo 2015, 04:05 AM

0 Miembros y 1 Visitante están viendo este tema.

Joe Fraddy

Hola amigos:

Estoy desarrollando una aplicación en modo texto en python que es capaz de ingresar datos como nombre, correo, fecha de cumpleaños etc...

En ese fichero puedo almacenar varios datos de usuarios, y me gustaría acceder a la información de solo un usuario dentro de ese fichero.

Saludos!!!

engel lex

podrías hacerlo por lineas, pero tienes que lerr linea a linea y parsear la linea para poder comparar
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Joe Fraddy


engel lex

#3
si, sería con readline, y haces un break si consigues el dato buscado

Código (python) [Seleccionar]
f = open('somefile.txt','r')
for line in f.readlines():
    if(dato): break
f.close()

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

tincopasan

una forma podría ser crear listas y arreglos

Eleкtro

#5
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:
Código (python) [Seleccionar]
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