Kaip skaityti iš stdin?

Bandau atlikti kai kuriuos code golf iššūkius, bet visi jie reikalauja, kad įvestis būtų paimta iš stdin. Kaip tai gauti Python kalba?

Galite naudoti fileinput modulį:

import fileinput

for line in fileinput.input():
    pass

fileinput apeis visas įvesties eilutes, nurodytas kaip failų pavadinimai, pateikti komandinės eilutės argumentuose, arba standartinę įvestį, jei argumentų nepateikta.

Pastaba: line turės galinę naująją eilutę; norėdami ją pašalinti, naudokite line.rstrip().

Komentarai (1)

Yra keli būdai, kaip tai padaryti.

  • sys.stdin yra į failą panašus objektas, kuriam galite iškviesti funkcijas read arba readlines, jei norite perskaityti viską, arba norite perskaityti viską ir automatiškai padalyti naujomis eilutėmis. (Kad tai veiktų, reikia importuoti sys.)

  • Jei norite, kad vartotojas *pateiktų įvesties duomenis, Python 2.X versijoje galite naudoti `raw_input, o Python 3 versijoje - tik `input.

  • Jei iš tikrųjų norite tik perskaityti komandinės eilutės parinktis, galite jas pasiekti per sąrašą sys.argv.

Tikriausiai jums pravers ir šis "Wikibook" straipsnis apie įvesties ir išvesties operacijas Pythone.

Komentarai (0)

Štai iš Learning Python:

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

Naudodami "Unix", galite tai išbandyti atlikdami šiuos veiksmus:

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

Naudodami "Windows" arba DOS, atlikite:

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