Hoe lees je van stdin?

Ik'probeer een aantal van de code golf uitdagingen te doen, maar ze vereisen allemaal dat de invoer uit stdin wordt gehaald. Hoe krijg ik dat in Python?

Je zou de fileinput module kunnen gebruiken:

import fileinput

for line in fileinput.input():
    pass

fileinput zal door alle regels in de invoer lopen die zijn opgegeven als bestandsnamen in command-line argumenten, of de standaard invoer als er geen argumenten zijn opgegeven.

Opmerking: line zal een nieuwe regel achteraan bevatten; om deze te verwijderen gebruikt u line.rstrip()

Commentaren (1)

Er zijn een paar manieren om het te doen.

  • sys.stdin]1 is een file-achtig object waarop je de functies read of readlines kunt aanroepen als je alles wilt lezen of als je alles wilt lezen en automatisch wilt splitsen met newline. (Je moet import sys hebben om dit te laten werken).

  • Als je de gebruiker wilt vragen om invoer, dan kun je raw_input gebruiken in Python 2.X, en gewoon input in Python 3.

  • Als je eigenlijk alleen command-line opties wilt lezen, kun je ze benaderen via de sys.argv lijst.

U zult waarschijnlijk dit Wikibook artikel over I/O in Python ook een nuttige referentie vinden.

Commentaren (0)

Hier's van Python leren:

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

Op Unix, zou je het kunnen testen door iets te doen als:

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

Op Windows of DOS, zou je zoiets doen als:

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