如何完成 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 + ZCTRL + 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?

你如何从标准输入读取?

使用 python 解码 MIME 电子邮件

如何判断WPF下窗口加载完成了

如何在完成处理程序中使用完成处理程序

如何创建自定义自动完成功能,如内置自动完成功能?