2011-04-05 74 views
19

這可能是一個愚蠢的問題,但我無法找到答案,我要問它。如何完成sys.stdin.readlines()輸入?

在交互式Python我要處理的消息,我用得到:

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

一切工作正常,但...如何從獲得的輸入阻止它,並把它存到消息的變量?用ctrl + c停止整個過程,所以沒有輸入可以保存在任何地方。我想有一個簡單的答案,我只是找不到...

回答

38

的基於UNIX的系統:

您好,您可以膠帶:Ctrl鍵d

Ctrl鍵d通過發送EOF關閉標準輸入(stdin) 。

例子:

>>> 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'] 

對於Windows:

要在Windows上發送EOF,可以更換按Ctrld通過按Ctrlž

+0

非常感謝 - 正是我所期待的。由於你們兩個都在同一時間回答,我會同時答覆你們的答案。 – Gandi 2011-04-05 08:38:53

+0

不客氣。 – 2011-04-05 08:42:56

4

使用CTRL-D

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

# message == ['abc\n', 'def\n'] 
4

這是一個古老的問題,但它需要更新關於Windows和不同的鍵盤佈局的

如果沒有CTRL + Z也不CTRL + d **爲您的工作在Windows並和你流浪是怎麼回事做到這一點:

  • 檢查,如果你正在使用默認爲英文鍵盤佈局
  • 如果你有不同的,非默認的鍵盤佈局嘗試在語言欄切換鍵盤設置爲英語,然後嘗試更改後按Ctrl + Z
  • 如果你仍然感到困惑看看屏幕,當按下ctrl + z時出現在命令行中。你看到什麼符號?當我按Ctrl + Z,我看到的是:^ Y,當誤我按下CTRL + Y我已經看到了這個^ Z,我按下輸入,被送往輸入,EOF發送。

這實在有些怪異和違反直覺。我改變鍵位佈局,前一段時間,包括拋光的人物,但所有的公共密鑰保持不變,Z仍然映射到z當我使用鍵盤正常,通常按CTRL + Z確實沒有在我的鍵盤,所以我不應該改變。但很顯然,在cmd中它的工作方式不同,爲了有CTRL和Z鍵我有切換到默認佈局,或使用控制y以發送EOF之間默認鏈接。

+0

廢話,你救了我。我不知道自己做錯了什麼,我終於找到了答案,你說'我按了回車',然後突然知道自己做錯了什麼。謝謝! – snowe 2014-03-05 00:25:42

1

在窗戶上,只需按CTRL + Z並按下輸入

相關問題