按 Ctrl-D 不会将 EOF 发送到我的 python 程序
Pressing Ctrl-D doesn't send EOF to my python program
我在 python 中编写了一些代码来读取标准输入。当我执行它并输入我想要的所有数据时,我按 Ctrl-D,这应该发送 EOF 宏,但实际上没有任何反应。我在 arch-linux 使用 alacritty 终端和 zsh shell 如果相关的话。
from sys import stdin, stdout
bl = False
res = ""
for line in stdin:
while line:
if bl:
bl = False
arr = list(map(int, line.strip().split(" ")))
dicc = {arr.index(x) : x for x in arr}
for key, value in dicc.items():
res += "{}:{} ".format(key, value)
else:
bl = True
stdout.write(res)
from sys import stdin, stdout
res = ''
while True:
line = stdin.readline()
if line:
res += line #do calculations
else:
break
stdout.write(res)
或使用 python 3.8 中的海象运算符:
while True:
if line := stdin.readline():
pass # do calculations with line
else:
break
这将继续从标准输入中获取值,直到按下 ctrl+d
我在 python 中编写了一些代码来读取标准输入。当我执行它并输入我想要的所有数据时,我按 Ctrl-D,这应该发送 EOF 宏,但实际上没有任何反应。我在 arch-linux 使用 alacritty 终端和 zsh shell 如果相关的话。
from sys import stdin, stdout
bl = False
res = ""
for line in stdin:
while line:
if bl:
bl = False
arr = list(map(int, line.strip().split(" ")))
dicc = {arr.index(x) : x for x in arr}
for key, value in dicc.items():
res += "{}:{} ".format(key, value)
else:
bl = True
stdout.write(res)
from sys import stdin, stdout
res = ''
while True:
line = stdin.readline()
if line:
res += line #do calculations
else:
break
stdout.write(res)
或使用 python 3.8 中的海象运算符:
while True:
if line := stdin.readline():
pass # do calculations with line
else:
break
这将继续从标准输入中获取值,直到按下 ctrl+d