Sto cercando di fare alcune delle sfide code golf, ma tutte richiedono che l'input sia preso da stdin
. Come posso ottenerlo in Python?
Potreste usare il modulo fileinput
:
import fileinput
for line in fileinput.input():
pass
fileinput
eseguirà un ciclo di tutte le linee in input specificate come nomi di file dati negli argomenti della linea di comando, o lo standard input se non sono forniti argomenti.
Nota: line
conterrà un newline finale; per rimuoverlo usa line.rstrip()
Ci sono alcuni modi per farlo.
sys.stdin
è un oggetto simile a un file su cui puoi chiamare le funzioni read
o readlines
se vuoi leggere tutto o se vuoi leggere tutto e dividerlo per newline automaticamente. (È necessario importare sys
perché questo funzioni).
Se volete promuovere l'utente per l'input, potete usare raw_input
in Python 2.X, e solo input
in Python 3.
Se in realtà volete solo leggere le opzioni della linea di comando, potete accedervi tramite la lista sys.argv.
Probabilmente troverete anche questo articolo di Wikibook sull'I/O in Python come utile riferimento.
Ecco da Learning Python:
import sys
data = sys.stdin.readlines()
print "Counted", len(data), "lines."
Su Unix, si potrebbe testare facendo qualcosa come
% cat countlines.py | python countlines.py
Counted 3 lines.
Su Windows o DOS, si potrebbe fare:
C:\> type countlines.py | python countlines.py
Counted 3 lines.