Jak czytać z stdin?

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().

Komentarze (1)

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.

Komentarze (0)

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.
Komentarze (3)