Saltar al contenido

¿Cómo leer la entrada del usuario hasta EOF en Python?

Solución:

Puedes usar sys módulo:

import sys

complete_input = sys.stdin.read()

sys.stdin es un objeto similar a un archivo que puede tratar como un objeto de archivo Python.

De la documentación:

La ayuda sobre la función incorporada lee:

read (size = -1, /) método de instancia _io.TextIOWrapper Lee como máximo n caracteres de la secuencia.

Read from underlying buffer until we have n characters or we hit EOF.
If n is negative or omitted, read until EOF.

Puede leer la entrada desde la consola hasta el final del archivo usando sys y os módulo en python. He utilizado estos métodos en jueces en línea como SPOJ varias veces.

Primer método (recomendado):

from sys import stdin

for line in stdin:
    if line == '': # If empty string is read then stop the loop
        break
    process(line) # perform some operation(s) on given string

Tenga en cuenta que habrá un carácter de línea final n al final de cada línea que lea. Si desea evitar imprimir 2 caracteres de línea final mientras imprime line usar print(line, end='').

Segundo método:

import os
# here 0 and 10**6 represents starting point and end point in bytes.
lines = os.read(0, 10**6).strip().splitlines() 
for x in lines:
    line = x.decode('utf-8') # convert bytes-like object to string
    print(line)

Este método no funciona en todos los jueces en línea, pero es la forma más rápida de leer la entrada de un archivo o consola.

Tercer método:

while True:
    line = input()
    if line == '':
        break
    process(line)

reemplazar input() con raw_input() si eres todavía usando Python 2.

Para las plataformas HackerRank y HackerEarth, se prefiere la siguiente implementación:

while True:
try :
    line = input()
    ...
except EOFError:
    break;
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *