Ваш скрипт работает, просто кажется, что ваши ожидания не верны.
script.py (с учетом Python 3, который я установил):
import sys
for line in sys.stdin:
print(line)
$ python script.py
abcd
abcd
xyz
xyz
Где первые вхождения "abcd" и "xyz" были моими входными данными изклавиатура и вторые были выходами программы.Я прекратил выполнение в этот момент с помощью ctrl-d.
Проблема в том, что чтение из stdin без ввода из канала не дает того, что вы ожидаете.Когда вы просто запускаете скрипт (без ввода по трубопроводу), он просто сидит и ждет, когда вы что-то введете с клавиатуры.Возможно, вы захотите изучить raw_input для получения ввода с клавиатуры.
Обновление:
После получения дополнительных разъяснений в комментариях о том, что вы хотите,следующий скрипт может дать вам желаемые результаты:
import sys
if not sys.stdin.isatty():
for line in sys.stdin:
print(line)
print("More stuff!")