[Python] Ayuda con registro de usuarios usando ficheros .txt

Iniciado por pysQl, 13 Julio 2015, 10:28 AM

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

pysQl

Bueno, como verán soy nuevo en el foro (y este es mi primer post :))
también en el mundo de la programación y estoy empezando en esto haciendo uso del lenguaje de programación Python.

De camino al grano:
Estoy intentando hacer un programa el cual registre a usuarios a una base de datos (en este caso .txt)
Hasta ahora tengo este código escrito el cual funciona y a grandes rasgos hace lo siguiente:

Haciendo uso de una función pregunta si se desea registrar, si es así, entonces llama a otra función la cual crea un documento de texto (en caso que no existiese) y almacena el nuevo usuario.

Código (python) [Seleccionar]
def nuevo_registro():
ok = input("Desea registrarse? (S/N): ")
while ok:
if ok in ('S','s','si','SI'):
print("Bienvenido al sistema de registros")
print(' --------------------------------')
registro_de_usuarios()
break
elif ok in ('N','n','no','NO'):
print("La proxima sera")
break
else:
print ("Opcion no valida")
return nuevo_registro()

def registro_de_usuarios():
user = input("Usuario: ")
registro_de_usuarios = open('usuarios_registrados.txt','a')
registro_de_usuarios.write(user + '\n')
registro_de_usuarios.close()
print('')
print("Usuario registrado con exito")


Mi duda es como podría hacer para que el usuario a registrar antes de ser registrado sea verificado si esta o no en el archivo "usuarios_registrados.txt" el cual creé para luego registrarlo.
Debería hacer uso de un siclo for, para leer las lineas del documento y compararlas?

Me gustaría que me den algunas recomendaciones para facilitar mi aprendizaje en este lenguaje y opiniones sobre el código presentado :) Pues es lo primero que escribo  :)

Eleкtro

Cita de: bdr en 13 Julio 2015, 10:28 AMMi duda es como podría hacer para que el usuario a registrar antes de ser registrado sea verificado si esta o no en el archivo "usuarios_registrados.txt" el cual creé para luego registrarlo.

Debería hacer uso de un siclo for, para leer las lineas del documento y compararlas?

Si, bien puedes usar un búcle para iterar las lineas y evaluar cada una de ellas.

En otros casos, donde no hiciese falta verificar palabras completas en una colección de strings, podrías utilizar la función find:
Cita de: https://docs.python.org/2/library/string.htmlstring.find(s, sub[, start[, end]])¶

   Return the lowest index in s where the substring sub is found such that sub is wholly contained in s[start:end]. Return -1 on failure. Defaults for start and end and interpretation of negative values is the same as for slices.

O también el keyword "In" (if str in col), pero dado el caso esas alternativas ahora mismo no te sirven.

Yo te sugiero utilizar un loop cómo ya pensaste, o igualmente expresiones regulares.

Esta función devolverá True si el nombre de usuario se encuentra en el archivo especificado:

Código (python) [Seleccionar]
import re

def find_username(filepath, username):
   with open(filepath) as filestream:
       return re.search(r"^" + re.escape(username) + r"$", filestream.read(), re.MULTILINE) != None

print find_username("C:\usuarios_registrados.txt", "elektro")


Saludos








pysQl

Primero lo primero, agradecido estoy por tu respuesta.
Imaginate recién lo que vengo aprendiendo que hasta me cuesta el lenguaje un tanto "técnico" sobre programación.. jaja

bueno, gracias de nuevo, me has motivado a estudiar un poco los módulos que python me ofrece, para probablemente conocer más funciones y hacer las propias..

aunque no sepa aún que contestar te digo que ya he culminado con mi primer programa :) usando un bucle iterando lineas y su post-evaluación xD y listo :)
gracias también por tu ejemplo de función importando "re"

pretendía sacarme otras dudas con respecto a esto en este mismo tema y con esto lo cierro:
¿ Que base de datos debería utillizar/aprender para comenzar a programar junto a Python y hacer un poco de programación web?

¿ Hoy día Python 3.4 es utilizable y estable ? o sería preferible usar Python 2.7 ?

Saludos,


LaThortilla (Effort)

Cita de: bdr en 15 Julio 2015, 15:49 PM
¿ Que base de datos debería utillizar/aprender para comenzar a programar junto a Python y hacer un poco de programación web?

- si piensas enfocar tus scripts a la programación web aprende o bien mySQL o SQL ...
- si necesitas base de datos para tu programa podrías usar SQLite3 que utiliza la misma sintaxis que mySQL...


Cita de: bdr en 15 Julio 2015, 15:49 PM
¿¿ Hoy día Python 3.4 es utilizable y estable ? o sería preferible usar Python 2.7 ?

ambas versiones ya son estables pero a mi gusto y mi experiencia python 2.7 es bueno..