コード・ゴルフ]1の課題をいくつかやろうとしていますが、どれも入力を stdin から取得する必要があります。これをPythonで実現するにはどうしたらよいでしょうか?
stdin
fileinput`]1モジュールを使うことができます。
import fileinput for line in fileinput.input(): pass
fileinput は、コマンドライン引数で与えられたファイル名で指定された入力、または引数が与えられていない場合は標準入力のすべての行をループします。
fileinput
注意: line には末尾に改行が含まれます。改行を削除するには line.rstrip() を使用してください。
line
line.rstrip()
方法はいくつかあります。
sys.stdinはファイルのようなオブジェクトで、すべてを読みたい場合には read関数やreadlines関数を、すべてを読んで自動的に改行で分割したい場合にはimport sysを呼び出すことができます。(これを動作させるには import sys が必要です。)
sys.stdin
read
readlines
import sys
ユーザーに入力を促したい場合は、Python 2.X では raw_input を、Python 3 では input を使用してください。
raw_input
input
実際に単にコマンドラインオプションを読みたい場合は、sys.argvリストでアクセスできます。
I/O in Pythonに関するWikibookの記事]3も参考になるでしょう。
これは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.
fileinput`]1モジュールを使うことができます。
fileinput
は、コマンドライン引数で与えられたファイル名で指定された入力、または引数が与えられていない場合は標準入力のすべての行をループします。注意:
line
には末尾に改行が含まれます。改行を削除するにはline.rstrip()
を使用してください。方法はいくつかあります。
sys.stdin
はファイルのようなオブジェクトで、すべてを読みたい場合にはread
関数やreadlines
関数を、すべてを読んで自動的に改行で分割したい場合にはimport sys
を呼び出すことができます。(これを動作させるにはimport sys
が必要です。)ユーザーに入力を促したい場合は、Python 2.X では
raw_input
を、Python 3 ではinput
を使用してください。実際に単にコマンドラインオプションを読みたい場合は、sys.argvリストでアクセスできます。
I/O in Pythonに関するWikibookの記事]3も参考になるでしょう。
これはLearning Pythonからの引用です。
Unixでは、次のようにしてテストすることができます。
WindowsやDOSでは、次のようにします。