首页 > 解决方案 > 在不同的函数中使用 sys.stdin.readlines() 后,如何在使用 input() 时消除错误 'EOFError: EOF?

问题描述

为了学习一种新的编程语言,我正在尝试将 Excel VBA 宏复制到 Python 中,但我被困在谷歌本身无济于事的地步(我想我什至不知道要寻找什么)。你能试一试吗?

我希望程序做什么: 运行时应该提示用户几个选项,如果输入为0,那么它应该要求多行输入,其中包含来自本网站Steam 工具的完整 HTML 源代码

输入后,用户应按 CTRL+D / CTLR+Z 确认没有其他要添加的内容(我认为问题出在此处,可能在再次使用 input() 时无法“清除”EOF 错误? )

然后作为输出,程序应返回由逗号分隔的前 10 行并创建另一个 input() 以避免窗口自动关闭。

问题是什么:当我从桌面运行它(双击 .py 文件)时,它会自动关闭而不创建最后一个输入()。

当我从 PyCharm 运行它时,它运行正常,最后一个输入仍在等待用户操作。但是,它确实会转储如下错误:

File "D:/Stuff/_root/py/Steam/steam_cards_manager.py", line 51, in z_parse_tbody
input('\nCopy the program output and type Back:') EOFError: EOF when reading a line

感谢任何反馈,因为我不知道我是否以简单/有效的方式做事。

我已经上传了我的 .py 文件和示例 HTML,以便更轻松地复制问题,希望对您有所帮助。

https://github.com/brmenezewe/db

标签: python-3.x

解决方案


事实证明,我必须用“触发”字替换 CTRL+D 快捷方式,当通过单个 input() 发送时,它会中断 While 循环并加入先前收到的输入:

def z_input_lines():
    lines = []
    while True:
        line = input()
        if not line or line.lower() != "go":
            lines.append(line)
        else:
            break
    return "".join(lines)

推荐阅读