Hvordan leser du fra stdin?

Jeg' prøver å gjøre noen av kodegolf -utfordringene, men de krever alle input som skal hentes fra stdin. Hvordan får jeg det i Python?

Du kan bruke modulen fileinput:

import fileinput

for line in fileinput.input():
    pass

fileinput vil løkke gjennom alle linjene i input spesifisert som filnavn gitt i kommandolinjeargumenter, eller standard input hvis ingen argumenter er gitt.

Merk: line vil inneholde en avsluttende ny linje; for å fjerne den, bruk line.rstrip().

Kommentarer (1)

Det er flere måter å gjøre det på.

  • sys.stdin er et fillignende objekt der du kan kalle funksjonene read eller readlines hvis du vil lese alt, eller du vil lese alt og dele det opp med ny linje automatisk. (Du må importere sys for at dette skal fungere).

  • Hvis du vil spørre brukeren om input, kan du bruke raw_input i Python 2.X, og bare input i Python 3.

  • Hvis du faktisk bare vil lese kommandolinjealternativer, kan du få tilgang til dem via listen sys.argv.

Du vil sannsynligvis også finne denne Wikibook-artikkelen om I/O i Python som en nyttig referanse.

Kommentarer (0)

Her fra Learning Python:

import sys
data = sys.stdin.readlines()
print "Counted", len(data), "lines."

På Unix kan du teste det ved å gjøre noe sånt som:

% cat countlines.py | python countlines.py 
Counted 3 lines.

På Windows eller DOS kan du gjøre følgende:

C:\> type countlines.py | python countlines.py 
Counted 3 lines.
Kommentarer (3)