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

求助:使用sys.stdin.readlines()后调用input()出现EOFError及程序自动关闭问题

解决你的Python程序输入异常与窗口自动关闭问题

看起来你遇到的两个问题核心都和标准输入流(stdin)的状态有关,咱们一步步拆解解决:

1. PyCharm中出现的EOFError问题

当你用Ctrl+D/Ctrl+Z结束多行输入时,本质是给程序发送了「输入流结束」的信号,这会直接关闭标准输入流。之后再调用input()尝试读取内容,因为流已经关闭,就会触发EOFError。

修复方案:

换一种不依赖关闭输入流的多行输入结束方式,比如约定用户输入单独一行END作为结束标记,示例代码如下:

print("请输入Steam Tools网站的完整HTML源码(输入单独一行END结束):")
html_content = []
while True:
    try:
        line = input()
        if line.strip().upper() == "END":
            break
        html_content.append(line)
    except KeyboardInterrupt:
        # 处理用户意外按Ctrl+C的情况
        print("输入已中断")
        break
full_html = "\n".join(html_content)

这种方式不会关闭输入流,后续的input()就能正常执行了。

2. 双击.py文件窗口自动关闭的问题

这个问题大概率是两种情况:一是程序执行到最后input()之前就抛出了异常,但双击运行时窗口一闪而过看不到错误;二是输入流被关闭后,input()直接报错导致程序提前退出。

修复方案:

  • 添加全局异常捕获+可靠的暂停方式:把核心逻辑放在try-except块里,确保任何异常都能被显示,同时用系统级的暂停命令替代input()(不受输入流状态影响):
def main():
    # 把你的所有程序逻辑放在这里
    pass

if __name__ == "__main__":
    try:
        main()
    except Exception as e:
        print(f"程序运行出错:{str(e)}")
        print("请检查输入内容或代码逻辑")
    # Windows环境下用系统暂停命令,兼容所有输入流状态
    import os
    os.system('pause')
  • 提前查看错误日志:如果双击运行还是闪退,可以临时在代码开头加上print("程序启动中...")之类的输出,或者把程序输出重定向到日志文件,方便排查问题。

关于代码效率的小建议

如果你的HTML解析是手动处理字符串,强烈建议使用BeautifulSoup4这个专业的HTML解析库——它能高效处理各种嵌套标签、不规则格式的HTML,比自己写正则或字符串截取要健壮得多。安装命令:

pip install beautifulsoup4

用它提取表格内容会比手动解析简洁不少,也能减少很多潜在的bug。

内容的提问来源于stack exchange,提问作者Wendell Menezes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 22:37:31