如何完成sys.stdin.readlines()输入?

Gan*_*ndi 25 python interactive input sys

这可能是一个愚蠢的问题,但由于我找不到答案,我不得不问它.

在交互式python中,我想处理一条消息:

>>> message = sys.stdin.readlines()
Run Code Online (Sandbox Code Playgroud)

一切正常,但是......如何阻止它获取输入并将其保存到消息变量中?使用ctrl + c停止会停止整个过程,因此无需在任何地方保存输入.我想有一个简单的答案,我找不到...

San*_*nda 48

对于基于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']
Run Code Online (Sandbox Code Playgroud)

对于Windows:

要在Windows上发送EOF,您可以替换CtrldCtrlz


Dev*_*hat 7

在 Windows 上,只需执行 CTRL+Z 并按 Enter


eum*_*iro 5

使用CTRL-D.

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

# message == ['abc\n', 'def\n']
Run Code Online (Sandbox Code Playgroud)


Paw*_*ech 5

这是一个老问题,但它需要有关Windows和不同键盘布局的更新.

如果CTRL + ZCTRL + D**都不能在Windows上运行,并且您正在徘徊正在进行的操作:

  • 检查您是否使用默认的英文键盘布局
  • 如果你有不同的非默认键盘布局尝试在语言栏中将键盘设置切换为英语,然后尝试在更改后按ctrl + z
  • 如果您仍然感到困惑,请查看屏幕,当您按ctrl + z时,命令行中会出现什么.你看到什么符号?当我按下ctrl + z时,我看到了这个:^ Y,当我错误地按下ctrl + y我看到了这个^ Z,我按下了输入并输入了,EOF发送.

这有点奇怪和违反直觉.我前段时间更改了键布局以包含抛光字符,但所有常用键保持不变,当我正常使用键盘时z仍然映射到z,通常ctrl + z在我的键盘中什么也不做,所以我不应该更改.但显然在cmd中它的工作方式不同,为了在ctrl和z之间建立默认链接,我必须切换到默认布局,或者使用控件y来发送EOF.