を読んだとき、私は次のスクリプトは、EOFError例外をスローせずに動作させることはできません。紛争() - 例外EOFError:EOF行
#!/usr/bin/env python3
import json
import sys
# usage:
# echo '[{"testname": "testval"}]' | python3 test.py
myjson = json.load(sys.stdin)
print(json.dumps(myjson))
answer = input("> ") # BUG: EOFError: EOF when reading a line
print(answer)
私はこの質問どれを読みました関連しているようです:Python STDIN User Input Issue
私は標準バッファーをクリアする必要があると私は言うと思いますか?しかし、私はprint(sys.stdin.readline())
が改行を出力していて、EOFErrorがまだそこに残っているので、どうしてわからないのですか?
sys.stdin.flush()
メソッド(この質問にある:Usage of sys.stdout.flush() method)を使ってみましたが、正式なドキュメント(3.6)で見つけることができなかったので、私はまだ理解しません。私はプログラマーでもCS教育やバックグラウンドも持っていないことに注意してください。私は、私の、それ以外の場合は、技術的でない作業の一部を自動化するためのスクリプトを書いています。だから、あなたが良い初心者を知っていれば、stdin/stdoutがPythonのシェルでどのように動作するかを再考してください。
'json.load(sys.stdinをは)' STDINで使用可能なすべてのデータを消費します。読んで残るものは何もないので、EOFです。 – melpomene