2011-04-05 280 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并按下输入

相关问题