Kā lasīt no stdin?

Es mēģinu izpildīt dažus no code golf uzdevumiem, bet tie visi prasa, lai ievades dati tiktu ņemti no stdin. Kā to iegūt Python?

Jūs varētu izmantot {fileinput moduli:

import fileinput

for line in fileinput.input():
    pass

`fileinput cilpveidā izstaigās visas ievades rindas, kas norādītas kā komandrindas argumentos dotie failu nosaukumi, vai standarta ievades rindas, ja argumenti nav doti.

Piezīme: line ietvers nobeiguma jauno rindu; lai to noņemtu, izmantojiet line.rstrip().

Komentāri (1)

Ir vairāki veidi, kā to izdarīt.

  • sys.stdin ir failam līdzīgs objekts, kuram var izsaukt funkcijas read vai readlines, ja vēlaties izlasīt visu vai arī vēlaties izlasīt visu un automātiski sadalīt to pēc jaunas rindkopas. (Lai tas darbotos, ir nepieciešams import sys.)

  • Ja jūs vēlaties *pieprasīt lietotājam ievadīt datus, Python 2.X versijā varat izmantot `raw_input, bet Python 3 versijā - tikai `input.

  • Ja patiesībā vēlaties tikai nolasīt komandrindas opcijas, tām var piekļūt, izmantojot sarakstu sys.argv.

Iespējams, jums noderēs arī šis Wikibook raksts par I/O Python.

Komentāri (0)

Šeit's no Learning Python:

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

Unix operētājsistēmā to var pārbaudīt, veicot kaut ko līdzīgu:

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

Operētājsistēmā Windows vai DOS jūs varētu veikt:

C:\> type countlines.py | python countlines.py 
Counted 3 lines.
Komentāri (3)