如何完成 sys.stdin.readlines() 输入?
Posted
技术标签:
【中文标题】如何完成 sys.stdin.readlines() 输入?【英文标题】:How to finish sys.stdin.readlines() input? 【发布时间】:2011-07-29 18:43:47 【问题描述】:这可能是一个愚蠢的问题,但由于我找不到答案,所以我必须问它。
在交互式 python 中,我想处理我收到的消息:
>>> message = sys.stdin.readlines()
一切正常,但是......如何阻止它获取输入并将其保存到消息变量中?使用 ctrl+c 停止会停止整个过程,因此不会在任何地方保存输入。我想有一个简单的答案,我只是找不到......
【问题讨论】:
【参考方案1】:使用CTRL-D
。
message = sys.stdin.readlines()
abc
def
<CTRL-D>
# message == ['abc\n', 'def\n']
【讨论】:
【参考方案2】:对于基于 unix 的系统:
你好,你可以录音:Ctrld
Ctrld 通过发送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 替换为 Ctrlz
【讨论】:
【参考方案3】:这是一个老问题,但需要更新一下Windows 和不同的键盘布局。
如果 CTRL + Z 和 CTRL + D ** 在 Windows 上都不适合您,并且您正在徘徊发生了什么,请执行以下操作:
检查您是否使用默认英文键盘布局 如果您确实有不同的非默认键盘布局,请尝试在语言栏中将键盘设置切换为英语,然后尝试在更改后按 ctrl + z 如果您仍然感到困惑,请查看屏幕,当您按下 ctrl + z 时,命令行中会出现什么。你看到了什么符号?当我按 ctrl + z 时,我看到了这个:^Y,当我错误地按 ctrl + y 时,我看到了这个 ^Z,我按了 enter 并输入了输入,发送了 EOF。这有点奇怪和违反直觉。前段时间我更改了键布局以包含波兰字符,但所有常用键都保持不变,当我正常使用键盘时 z 仍然映射到 z ,通常 ctrl + z 在我的键盘上什么都不做,所以我不应该改变.但显然在 cmd 中它的工作方式不同,为了在 ctrl 和 z 之间建立默认链接,我必须切换到默认布局,或者使用 control y 发送 EOF。
【讨论】:
【参考方案4】:在 Windows 上只需按 CTRL+Z 并按 Enter 键
【讨论】:
【参考方案5】:如果你是 Mac 用户,请使用 command + D。它可以工作!
【讨论】:
以上是关于如何完成 sys.stdin.readlines() 输入?的主要内容,如果未能解决你的问题,请参考以下文章
在Python 3中将Ctrl-D与sys.stdin.readlines()结合使用后,如何避免input()出现EOFError?