質問編集履歴

1

input()とsys.stdin.readline()は通るが、bufferメソッドは通らない

2020/10/15 09:32

投稿

MirrorB
MirrorB

スコア0

test CHANGED
File without changes
test CHANGED
@@ -2,11 +2,17 @@
2
2
 
3
3
  Pycharmにてコードをテストする際に、デバッガーモードだと標準入力の改行を無視するといった動作があるようなので、簡単なチェックはPythonコンソールを使用しようと思っています。
4
4
 
5
- しかし、Pythonコンソールではinput()でもsys.stdin.readline()でも入力が受け付けない状態になって固まってしまいます。その状態で入力をすると、コードが走っていてまだ処理されていないとエラーがでます。
5
+ しかし、Pythonコンソールでは~~input()でもsys.stdin.readline()でも~~sys.stdin.buffer.readline()の入力が受け付けない状態になって固まってしまいます。その状態で入力をすると、コードが走っていてまだ処理されていないとエラーがでます。
6
6
 
7
7
  ターミナルからPythonのREPLを起動して同様のコードを入力するときちんと標準入力を受け付けてくれます。
8
8
 
9
9
  なのでPythonコンソール特有の仕様か自分の環境の問題だと思うのですが、何かご存知の方いらっしゃいましたら、ご教授いただけると幸いです。
10
+
11
+
12
+
13
+
14
+
15
+
10
16
 
11
17
 
12
18
 
@@ -16,13 +22,11 @@
16
22
 
17
23
 
18
24
 
19
- >>> readline = sys.stdin.buffer.readline()
25
+ >>> readline = sys.stdin.buffer.readline
20
26
 
21
27
  #ここまではPythonコンソールで動作確認済み
22
28
 
23
- #以下input(), readline() どちらの標準入力が受付されません。
24
-
25
- >>> n = input()
29
+ >>> n = readline()
26
30
 
27
31
  ...
28
32
 
@@ -34,13 +38,15 @@
34
38
 
35
39
  #強引にStop consoleでリセットしました。
36
40
 
41
+ ```
42
+
43
+ ###2020/10/15/18:20 修正
44
+
45
+ 特に何も触っていませんが、なぜかinputとsys.stdin.readlineそのものはPythonコンソールで受け付けるようになりました。自分の環境のせいだったようです。
46
+
47
+ ただ、sys.stdin.buffer.readline()は依然として通らないので、どういう仕様なのか分かっていません。
37
48
 
38
49
 
39
- >>> m = readline()
40
-
41
- #input()と同様です。
42
-
43
- ```
44
50
 
45
51
 
46
52