32

これはばかげた質問かもしれませんが、答えが見つからないので、私はそれを尋ねなければなりません。

インタラクティブなPythonで、次のメッセージを処理したいと思います。

>>> message = sys.stdin.readlines()

すべて正常に動作しますが、入力を取得しないようにしてメッセージ変数に保存するにはどうすればよいですか?ctrl + cで停止すると、プロセス全体が停止するため、どこにも保存する入力がありません。見つけられない簡単な答えがあると思います...

4

5 に答える 5

62

For unix based system :

Hello, you can tape : Ctrld

Ctrld closes the standard input (stdin) by sending EOF.

Example :

>>> import sys
>>> message = sys.stdin.readlines()
Hello
World
My
Name
Is
James
Bond
# <ctrl-d> EOF sent
>>> print message
['Hello\n', 'World\n', 'My\n', 'Name\n', 'Is\n', 'James\n', 'Bond\n']

For Windows :

To send EOF on Windows, you can replace Ctrld by Ctrlz

于 2011-04-05T08:30:29.970 に答える
6

これは古い質問ですが、 Windowsとさまざまなキーボードレイアウトに関する更新が必要です。

CTRL+ZCTRL+D **もWindowsで機能せず、何が起こっているのか迷っている場合は、次のようにします。

  • デフォルトの英語キーボードレイアウトを使用しているかどうかを確認します
  • デフォルト以外の異なるキーボードレイアウトがある場合は、言語バーでキーボード設定を英語に切り替えてみてください。変更後にctrl+zを押してみてください
  • それでも混乱する場合は、画面を見て、ctrl+zを押したときにコマンドラインに何が表示されるかを確認してください。どんなシンボルが見えますか?ctrl + zを押しているときに、これが表示されていました:^ Y、誤ってctrl +yを押したときにこの^Zが表示されたので、Enterキーを押して入力を取得し、EOFを送信しました。

これはやや奇妙で直感に反します。少し前にキーのレイアウトを変更してポーランド語の文字を含めましたが、すべての共通キーは変更されていません。キーボードを通常使用すると、zはzにマップされます。通常、ctrl + zはキーボードで何も行わないため、変更しないでください。 。しかし、明らかにcmdでは動作が異なります。ctrlとzの間にデフォルトのリンクを設定するには、デフォルトのレイアウトに切り替えるか、コントロールyを使用してEOFを送信する必要があります。

于 2013-07-29T12:52:53.303 に答える
5

Use CTRL-D.

message = sys.stdin.readlines()
abc
def
<CTRL-D>

# message == ['abc\n', 'def\n']
于 2011-04-05T08:30:20.723 に答える
4

Windowsでは、CTRL+Zを押してEnterキーを押すだけです。

于 2017-03-03T10:08:16.443 に答える
2

Macユーザーの場合は、コマンド+Dを使用してください。動作します。

于 2021-01-07T13:56:54.277 に答える