質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

IDE

IDE、統合開発環境((Integrated Development Environment)とは、テキストエディタ以上の機能を提供して、ソフトウェア開発を効率をあげるコンピュータプログラムを指す。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

PyCharm

エディター・開発ツール

Q&A

0回答

1593閲覧

【Python3/Pycharm】Pythonコンソールでの標準入力が受け付けられない

MirrorB

総合スコア0

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

IDE

IDE、統合開発環境((Integrated Development Environment)とは、テキストエディタ以上の機能を提供して、ソフトウェア開発を効率をあげるコンピュータプログラムを指す。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

PyCharm

エディター・開発ツール

0グッド

2クリップ

投稿2020/10/15 05:17

編集2020/10/15 09:32

PycharmのPythonコンソール

Pycharmにてコードをテストする際に、デバッガーモードだと標準入力の改行を無視するといった動作があるようなので、簡単なチェックはPythonコンソールを使用しようと思っています。
しかし、Pythonコンソールではinput()でもsys.stdin.readline()でもsys.stdin.buffer.readline()の入力が受け付けない状態になって固まってしまいます。その状態で入力をすると、コードが走っていてまだ処理されていないとエラーがでます。
ターミナルからPythonのREPLを起動して同様のコードを入力するときちんと標準入力を受け付けてくれます。
なのでPythonコンソール特有の仕様か自分の環境の問題だと思うのですが、何かご存知の方いらっしゃいましたら、ご教授いただけると幸いです。

python

1>>> import sys 2 3>>> readline = sys.stdin.buffer.readline 4#ここまではPythonコンソールで動作確認済み 5>>> n = readline() 6... 7(ここで入力してもPrevious command is runnningとエラーが出ます) 8^C>>> 9(Ctrl+Cで抜け出せるように見えますが、>>>の位置がずれて以降コマンドが効きません) 10#強引にStop consoleでリセットしました。

###2020/10/15/18:20 修正
特に何も触っていませんが、なぜかinputとsys.stdin.readlineそのものはPythonコンソールで受け付けるようになりました。自分の環境のせいだったようです。
ただ、sys.stdin.buffer.readline()は依然として通らないので、どういう仕様なのか分かっていません。

###環境

  • PyCharm Community Edition 2020.2.1
  • python 3.8
  • Windows 10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takutakuya

2020/10/15 06:55

Mac、PyCharm Pro 2020.2.3、Python 3.8.2 では問題なさそうですね。 「readline = sys.stdin.buffer.readline()」の後は何かを入力しているのでしょうか? 単純にinput()だけ試しても同じ現象が再現できるのでしょうか?
takutakuya

2020/10/15 07:25

すみません。Python Consoleではなく、Terminalでやってました。 sys.stdin.readline() だとどうでしょう?
MirrorB

2020/10/15 09:21

もろもろの環境を確認してみて特におかしいところはなかったので、改めてinput()とsys.stdin.readline()を行ってみたところ、なぜか受け付けるようになりました。 readline = sys.stdin.buffer.readline ではメソッドを格納しています。この後には特に入力していませんが、ご指摘の通りbufferをつけてコンソールで実行してみると質問の内容のように固まってしまいました。 bufferはBinaryIOクラスのメソッドで、入力をエンコードや改行文字の削除など行わずに、そのままバイナリーに変換して格納すると理解していますが、PycharmのPythonコンソールでは動かないということになりますかね よければPythonコンソールでsys.stdin.buffer.readline()が実行できるか試していただけないでしょうか。
MirrorB

2020/10/15 09:37

>> takutakuyaさん 申し訳ありません。こちらの質問に書く際にコードの表記にミスがありました。 readline = sys.stdin.buffer.readline()とありましたが、実際にはreadline = sys.stdin.buffer.readlineと入力していました。 readline = sys.stdin.buffer.readline()だと入力受け付けてreadlineに格納してしまいますが、私が実際に行っていたのはメソッドの格納でした。混乱させてしまい申し訳ございません。
takutakuya

2020/10/15 10:05

Python Console で sys.stdin.buffer.readline() は正常に動きませんね。 まぁ sys.stdin.readline() でいいんじゃないでしょうか? PyCharmの機能の一部なので、仕様かどうかは JetBrains に確認したほうが早いかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問