按 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