[英]How to finish sys.stdin.readlines() input?
這可能是一個愚蠢的問題,但是由於找不到答案,我不得不提出這個問題。
在交互式python中,我想處理一條消息:
>>> message = sys.stdin.readlines()
一切正常,但是...如何阻止它獲取輸入並將其保存到message變量中? 使用ctrl + c停止將停止整個過程,因此沒有輸入要保存在任何地方。 我想我找不到一個簡單的答案...
對於基於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,您可以將Ctrl d替換為Ctrl z
這是一個老問題,但是需要有關Windows和不同鍵盤布局的更新。
如果在Windows上 CTRL + Z或CTRL + D **都不適合您 ,並且您正在漫游正在發生的事情,請執行以下操作:
這有點奇怪並且違反直覺。 不久前,我更改了鍵的布局以包含波蘭語字符,但是所有常用鍵均保持不變,當我正常使用鍵盤時,z仍映射到z,通常ctrl + z在鍵盤上什么也不做,所以不應該更改。 但是顯然在cmd中它的工作方式不同,為了在ctrl和z之間具有默認鏈接,我必須切換到默認布局,或使用控件y發送EOF。
使用CTRL-D
。
message = sys.stdin.readlines()
abc
def
<CTRL-D>
# message == ['abc\n', 'def\n']
在Windows上,只需執行CTRL + Z,然后按Enter
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.