Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Joe Fraddy en 1 Marzo 2015, 04:05 am



Título: Python ver información de un fichero
Publicado por: Joe Fraddy en 1 Marzo 2015, 04:05 am
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!!!


Título: Re: Python ver información de un fichero
Publicado por: engel lex en 1 Marzo 2015, 04:12 am
podrías hacerlo por lineas, pero tienes que lerr linea a linea y parsear la linea para poder comparar


Título: Re: Python ver información de un fichero
Publicado por: Joe Fraddy en 1 Marzo 2015, 04:27 am
se puede con readline() ???


Título: Re: Python ver información de un fichero
Publicado por: engel lex en 1 Marzo 2015, 04:36 am
si, sería con readline, y haces un break si consigues el dato buscado

Código
  1. f = open('somefile.txt','r')
  2. for line in f.readlines():
  3.    if(dato): break
  4. f.close()


Título: Re: Python ver información de un fichero
Publicado por: tincopasan en 1 Marzo 2015, 04:46 am
una forma podría ser crear listas y arreglos


Título: Re: Python ver información de un fichero
Publicado por: Eleкtro en 1 Marzo 2015, 15:38 pm
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
  1. import pickle, time
  2.  
  3. # Defino la Class 'UserData', que almacena la config del usuario.
  4. class UserData:
  5.  
  6.    def __init__(self, name, mail, birthday):
  7.        self.__name = name
  8.        self.__mail = mail
  9.        self.__birthday = birthday
  10.  
  11.    def Name(self):
  12.        return self.__name
  13.  
  14.    def Mail(self):
  15.        return self.__mail
  16.  
  17.    def Birthday(self):
  18.        return time.strptime(self.__birthday, '%d %B %Y')
  19.  
  20. # Instancio la class 'UserData' para 3 usuarios distintos.
  21. user1 = UserData('Elektro', 'ElektroStudios@ElHacker.Net', '8 September 1986')
  22. user2 = UserData('pedrito', None, None)
  23. user3 = UserData('jaimito', None, None)
  24.  
  25. # Instancio una lista de 'UserData' con los 3 usuarios.
  26. users = [user1, user2, user3]
  27.  
  28. # Serializo la lista a un archivo.
  29. with open('config.bin', 'wb') as f:
  30.     pickle.dump(users, f)
  31.  
  32. # Deserializo la lista desde el archivo.
  33. with open('config.bin', 'rb') as f:
  34.     loadedUsers = pickle.load(f)
  35.  
  36. # Instancio una lista de 'UserData' cargando los usuarios que tengan 'X' nombre.
  37. userMatches = [user for user in loadedUsers if user.Name() == 'Elektro']
  38.  
  39. # Muestro la informacion del primer usuario cargado.
  40. print userMatches[0].Name()
  41. print userMatches[0].Mail()
  42. print userMatches[0].Birthday().tm_year

Output:
Código:
Elektro
ElektroStudios@ElHacker.Net
1986