python input interactive sys

python - ¿Cómo terminar la entrada sys.stdin.readlines()?



input interactive (4)

En las ventanas simplemente haga CTRL + Z y presione enter

Esta podría ser una pregunta tonta, pero como no puedo encontrar una respuesta, tengo que hacerla.

En Python interactivo quiero procesar un mensaje que recibo con:

>>> message = sys.stdin.readlines()

Todo funciona bien, pero ... ¿cómo evitar que obtenga una entrada y hacer que se guarde en la variable del mensaje? Al detenerse con ctrl + c, se detiene todo el proceso para que no haya entradas que se guarden en ninguna parte. Supongo que hay una respuesta fácil que simplemente no puedo encontrar ...


Esta es una pregunta antigua pero necesita una actualización sobre Windows y diferentes diseños de teclado.

Si ni CTRL + Z ni CTRL + D ** trabajan para usted en Windows y usted está vagando por lo que está haciendo, haga esto:

  • Compruebe si está utilizando la distribución de teclado en inglés por defecto
  • Si tiene una distribución de teclado diferente, no predeterminada, intente cambiar la configuración del teclado a inglés en la barra de idioma, luego intente presionar ctrl + z después de los cambios
  • si aún está confundido, mire la pantalla, lo que aparece en la línea de comando cuando presiona ctrl + z. ¿Qué símbolo ves? Cuando estaba presionando ctrl + z, estaba viendo esto: ^ Y, y cuando por error presioné ctrl + y he visto este ^ Z, presioné Enter y tomé la entrada, EOF enviado.

Esto es algo extraño y contraintuitivo. Cambié el diseño de las teclas hace algún tiempo para incluir caracteres polacos, pero todas las teclas comunes no se modifican, z aún se asigna a z cuando uso el teclado normalmente, normalmente, ctrl + z no hace nada en mi teclado, por lo que no debería cambiarme . Pero aparentemente en cmd funciona de manera diferente, para tener un enlace predeterminado entre ctrl y z, tengo que cambiar al diseño predeterminado o usar el control y para enviar EOF.


Utilice CTRL-D .

message = sys.stdin.readlines() abc def <CTRL-D> # message == [''abc/n'', ''def/n'']


Para el sistema basado en Unix:

Hola, puedes grabar: Ctrl d

Ctrl d cierra la entrada estándar (estándar) enviando EOF .

Ejemplo:

>>> import sys >>> message = sys.stdin.readlines() Hello World My Name Is James Bond # <ctrl-d> EOF sent >>> print message [''Hello/n'', ''World/n'', ''My/n'', ''Name/n'', ''Is/n'', ''James/n'', ''Bond/n'']

Para ventanas :

Para enviar EOF en Windows, puede reemplazar Ctrl d por Ctrl z