現在のコードは、改行までユーザー入力を読み取ります。しかし、ユーザーがstrg + dまで入力を終了して入力を終了できる形式に変更しようとしています。
私は現在このようにします:
input = raw_input ("Input: ")
しかし、どうすればそれをEOF対応バージョンに変更できますか?
_file.read
_ を使用します:
_input_str = sys.stdin.read()
_
ドキュメントによると:
file.read([size])
ファイルから最大でサイズバイトを読み取ります(読み取りがサイズバイトを取得する前にヒットした場合EOF)。サイズ引数が負であるか省略された場合、EOFに達しました。
_>>> import sys
>>> isinstance(sys.stdin, file)
True
_
ところで、変数名としてinput
を使用しないでください。組み込み関数 input
をシャドウします。
これはPython 3:
from sys import stdin
for line in stdin:
print(line)
次のこともできます。
acc = []
out = ''
while True:
try:
acc.append(raw_input('> ')) # Or whatever Prompt you prefer to use.
except EOFError:
out = '\n'.join(acc)
break
sys.stdin.readline()
を使用すると、次のように記述できます。
import sys
while True:
input_ = sys.stdin.readline()
if input_ == '':
break
print type(input_)
sys.stdout.write(input_)
入力が何であれ、それは文字列であることを忘れないでください。
ために raw_input
またはinput
バージョン、次のように記述します。
while True:
try:
input_ = input("Enter:\t")
#or
_input = raw_input("Enter:\t")
except EOFError:
break
print type(input_)
print type(_input)
print input_
print _input