You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3.12.3多行输入按Ctrl+D结束时丢失末尾字符求助

问题原因

input() 函数仅在读取到换行符时才会返回完整的一行内容。如果你在输入完字符后直接按 Ctrl+D 而不输入换行符,未完成的那一行内容不会被 input() 捕获,而是直接触发 EOFError,导致末尾的字符丢失。

解决方案

要捕获所有输入内容(包括未以换行符结尾的部分行),可以直接通过 sys.stdin.read() 读取全部输入直到 EOF,它会包含所有输入的字符,无论是否有换行符。之后可以用 splitlines() 将内容拆分为行,保持和原代码一致的结构。

修正后的代码

import sys

def main():
    all_input = sys.stdin.read()
    lines = all_input.splitlines()
    print(lines)
    
if __name__ == "__main__":
    main()

逐行读取的替代方案

如果处理大输入时不想一次性加载全部内容到内存,可以用 sys.stdin.readline() 逐行读取,它在遇到 EOF 时会返回空字符串,同时能正确处理未以换行符结尾的部分行:

import sys

def main():
    lines = []
    while True:
        line = sys.stdin.readline()
        if not line:
            break
        lines.append(line.rstrip('\n'))
    print(lines)
    
if __name__ == "__main__":
    main()

这两种方案都能正确捕获你输入的全部内容,比如输入 --- 后按 Ctrl+D,会得到 ['---'] 而非 ['--']。

内容的提问来源于stack exchange,提问作者Michal P.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:13:19