python-3.x - 在不同的函数中使用 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,以便更轻松地复制问题,希望对您有所帮助。
解决方案
事实证明,我必须用“触发”字替换 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)
推荐阅读
- c# - Listbox.items.Add 按 2 个字段的值添加
- python - 为什么 `return(val)` 与 Python 3 中的 `return val` 工作方式相同?
- c++ - 在 Adreno 630 上的 vulkan 计算着色器中使用 glsl barrier() 函数时遇到问题
- apache-camel - 如何使用骆驼端点来管理文件?
- android - Kotlin 使用 TikXml 解析 XML 文件
- python - 使用 OpenCV 和 Python 检测汽车上的车牌
- javascript - SQL选择值的倍数
- clojure - 在 clojure 列表中转发填充 nil 值的更好方法
- python - 打印最长的正负交替序列(包括0)
- intellij-idea - 如何使用 intellij 在所有模块中显示错误?