Python - Limitar la cantidad de caracteres en un input()

   
Vista:

Limitar la cantidad de caracteres en un input()

Publicado por Jac (5 intervenciones) el 13/03/2018 19:42:19
Buenas tardes:

A ver si me podeis echar un cable con esto, que por mas que busco no doy con ello:

Quiero hacer un input() o un raw_input() en el terminal linea de comandos (sin entorno grafico) y limitar la cantidad de caracteres que se pueden introducir y visualizar en pantalla.

Algo al estilo de este codigo:

input("Quien eres? ", maxlength=4)

Lo que quiero decir es que una vez que hayas completado el numero de pulsaciones o caracteres indicados ya no se puedan introducir mas... Por logica, ni se podrian introducir, ni se presentarian en pantalla.

En el ejemplo de antes, para respuesta Jose:
Quien eres? Jose

En el ejemplo de antes, para respuesta Augusto:
Quien eres? Augu

En el caso de que el "maxlength" fuese igual a 2, para la respuesta Jose quedaria asi:
Quien eres? Jo

He mirado algunas librerias (curses, ncurse, pynput), pero no he visto nada clarificador.

Me podeis dar una idea de como hacerlo?

Muchas gracias de antemano y un saludo!

Jose.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Limitar la cantidad de caracteres en un input()

Publicado por Esteban Sánchez (2 intervenciones) el 16/03/2018 00:02:05
No tengo respuesta pero me interesa saberla
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

Limitar la cantidad de caracteres en un input()

Publicado por kip (242 intervenciones) el 18/03/2018 17:28:30
Hola, tu pregunta es interesante asi que he intentado buscar la respuesta y parece que encontré algo usando el paquete Click

1
2
3
4
5
6
7
8
9
10
11
12
13
import click
 
maxlength = 2
name = ''
 
click.echo('Write your name: ', nl=False)
 
while len(name) < maxlength:
    temp = click.getchar().decode('utf-8')
    click.echo(temp, nl=False)
    name += temp
else:
    click.echo('\nYour name is %s' % name)

Uso la funcion echo que provee Click pero puedes usar print tambien, el secreto esta en la funcion o metodo getchar.

Uso el decode porque en la version 3 de Python el modulo msvcrt en especial la funcion getch que es la que usan en el paquete retorna el caracter como un byte string, esto sucede solo en Windows.... deberas ajustarlo como desees si te da algun error.

A partir de aquella logica puedes crear tu propia funcion...

Pruebalo y nos cuentas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Limitar la cantidad de caracteres en un input()

Publicado por Jose (5 intervenciones) el 14/04/2018 21:21:47
Gracias por responder!

Instalo el paquete (en ubuntu) al parecer este paquete solo esta disponible para Python 3.

# apt-get install python3-click.

Pruebo con el ejemplo que me indicabas, pero los atributos del modulo parecen no funcionar.

$ python3.4 ejemplo.py

Esta es la salida que entrega el interprete:

Traceback (most recent call last):
File "1.py", line 6, in <module>
click.echo('Write your name: ', nl=False)
AttributeError: 'module' object has no attribute 'echo'

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad