Kako berete iz stdin?

Poskušam opraviti nekaj izzivov code golf, vendar vsi zahtevajo, da se vnos vzame iz stdin. Kako to dobim v Pythonu?

Uporabite lahko modul fileinput:

import fileinput

for line in fileinput.input():
    pass

`fileinput bo v zanki pregledal vse vrstice v vhodu, ki so določene kot imena datotek, podana v argumentih ukazne vrstice, ali standardni vhod, če argumenti niso podani.

Opomba: linija bo vsebovala zaključno novo vrstico; za njeno odstranitev uporabite line.rstrip()

Komentarji (1)

To lahko storite na več načinov.

  • sys.stdin je datoteki podoben objekt, na katerem lahko pokličete funkciji read ali readlines, če želite prebrati vse ali če želite prebrati vse in to samodejno razdeliti z novo vrstico. (Za delovanje te funkcije morate importirati sys.)

  • Če želite uporabnika spodbuditi za vnos, lahko v Pythonu 2.X uporabite `raw_input, v Pythonu 3 pa samo input.

  • Če dejansko želite le prebrati možnosti ukazne vrstice, lahko do njih dostopate prek seznama sys.argv.

Verjetno vam bo ta članek v Wikiknjigi o vhodu/izhodu v Pythonu prav tako koristna referenca.

Komentarji (0)

Tukaj je iz Learning Python:

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

Na Unixu lahko to preizkusite tako, da naredite nekaj takega:

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

V operacijskem sistemu Windows ali DOS bi naredili:

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