web-dev-qa-db-ja.com

EOFまでユーザー入力を読み取る方法

現在のコードは、改行までユーザー入力を読み取ります。しかし、ユーザーがstrg + dまで入力を終了して入力を終了できる形式に変更しようとしています。

私は現在このようにします:

input = raw_input ("Input: ")

しかし、どうすればそれをEOF対応バージョンに変更できますか?

32
Saphire

_file.read_ を使用します:

_input_str = sys.stdin.read()
_

ドキュメントによると:

file.read([size])

ファイルから最大でサイズバイトを読み取ります(読み取りがサイズバイトを取得する前にヒットした場合EOF)。サイズ引数が負であるか省略された場合、EOFに達しました。

_>>> import sys
>>> isinstance(sys.stdin, file)
True
_

ところで、変数名としてinputを使用しないでください。組み込み関数 input をシャドウします。

34
falsetru

これはPython 3:

from sys import stdin

for line in stdin:
  print(line)
27
arekolek

次のこともできます。

acc = []
out = ''
while True:
    try:
        acc.append(raw_input('> ')) # Or whatever Prompt you prefer to use.
    except EOFError:
        out = '\n'.join(acc)
        break
19
Joel Cornett

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
2
Pet B