Snažím sa splniť niektoré z výziev code golf, ale všetky vyžadujú, aby bol vstup prevzatý z stdin
. Ako to získam v Pythone?
Môžete použiť modul fileinput
:
import fileinput
for line in fileinput.input():
pass
fileinput
prechádza všetky riadky na vstupe zadané ako názvy súborov uvedené v argumentoch príkazového riadka alebo štandardný vstup, ak nie sú zadané žiadne argumenty.
Poznámka: line
bude obsahovať koncové nové riadky; na ich odstránenie použite line.rstrip()
Existuje niekoľko spôsobov, ako to urobiť.
sys.stdin
je objekt podobný súboru, na ktorom môžete volať funkcie read
alebo readlines
, ak chcete čítať všetko, alebo chcete čítať všetko a automaticky to rozdeliť novým riadkom. (Aby to fungovalo, musíte importovať sys
.)
Ak chcete vyžiadať od používateľa vstup, môžete v Pythone 2.X použiť raw_input
a v Pythone 3 len input
.
Ak chcete vlastne len čítať voľby príkazového riadka, môžete k nim pristupovať prostredníctvom zoznamu sys.argv.
Za užitočnú referenciu pravdepodobne považujete aj tento článok Wikibooku o vstupoch a výstupoch v jazyku Python.
Tu'je z Learning Python:
import sys
data = sys.stdin.readlines()
print "Counted", len(data), "lines."
Na Unixe by ste to mohli otestovať tak, že urobíte niečo ako:
% cat countlines.py | python countlines.py
Counted 3 lines.
V systéme Windows alebo DOS by ste urobili:
C:\> type countlines.py | python countlines.py
Counted 3 lines.