I'm trying to do some of the code golf challenges, but they all require the input to be taken from stdin
. Jak mogę to osiągnąć w Pythonie?
Możesz użyć modułu fileinput
:
import fileinput
for line in fileinput.input():
pass
fileinput
zapętli wszystkie linie na wejściu określonym jako nazwy plików podane w argumentach wiersza poleceń, lub standardowe wejście, jeśli nie podano żadnych argumentów.
Uwaga: linia
będzie zawierać kończącą się nową linię; aby ją usunąć, użyj line.rstrip()
.
Jest kilka sposobów, aby to zrobić.
sys.stdin
jest obiektem podobnym do pliku, na którym możesz wywołać funkcje read
lub readlines
jeśli chcesz przeczytać wszystko lub chcesz przeczytać wszystko i podzielić to automatycznie przez nową linię. (Musisz importować sys
, aby to zadziałało).
Jeśli chcesz poprosić użytkownika o dane wejściowe, możesz użyć raw_input
w Pythonie 2.X, i po prostu input
w Pythonie 3.
Jeśli chcesz tylko odczytać opcje wiersza poleceń, możesz uzyskać do nich dostęp za pomocą listy sys.argv.
Prawdopodobnie znajdziesz ten artykuł Wikibook o I/O w Pythonie jako użyteczne odniesienie.
Tutaj'jest z Nauka Pythona:
import sys
data = sys.stdin.readlines()
print "Counted", len(data), "lines."
Na Uniksie, możesz to przetestować robiąc coś takiego:
% cat countlines.py | python countlines.py
Counted 3 lines.
W systemie Windows lub DOS, można'by zrobić:
C:\> type countlines.py | python countlines.py
Counted 3 lines.