Як читати з stdin?

Я намагаюся виконати деякі завдання з code golf, але всі вони вимагають, щоб вхідні дані були взяті з stdin. Як це зробити у Python?

Ви можете скористатися модулем fileinput:

import fileinput

for line in fileinput.input():
    pass

fileinput перебиратиме всі рядки у вхідних даних, вказані як імена файлів, задані в аргументах командного рядка, або стандартний ввід, якщо аргументи не надано.

Зауваження: line буде містити кінцевий новий рядок; щоб видалити його, використовуйте line.rstrip().

Коментарі (1)

Є кілька способів зробити це.

  • sys.stdin - це файловий об'єкт, на якому можна викликати функції read або readlines, якщо ви хочете прочитати все, або ви хочете прочитати все і розбити його на нові рядки автоматично. (Для цього потрібно імпортувати sys, щоб це працювало).

  • Якщо ви хочете запитати користувача про введення, ви можете використовувати raw_input в Python 2.X, і просто input в Python 3.

  • Якщо ви просто хочете прочитати параметри командного рядка, ви можете отримати доступ до них через список sys.argv.

Можливо, ви також знайдете цю статтю Вікіпедії про ввід/вивід у Python корисною довідкою.

Коментарі (0)

Це з Learning Python:

import sys
data = sys.stdin.readlines()
print "Counted", len(data), "lines."

У Unix ви можете протестувати його, зробивши щось на кшталт:

% cat countlines.py | python countlines.py 
Counted 3 lines.

У Windows або DOS, ви повинні зробити так:

C:\> type countlines.py | python countlines.py 
Counted 3 lines.
Коментарі (3)