Python脚本中input()正常运行,交互式导入为何报‘unexpected EOF while parsing’?
问题解决:import模块时触发'unexpected EOF while parsing'错误
原因
当你在交互式会话中执行import spam时,Python会运行模块里的所有代码。此时模块中的input()会等待你输入内容,但交互式环境在导入流程中处理输入的逻辑和直接运行脚本不同——如果输入不完整(比如没输入就结束),就会触发EOF解析错误。而直接在终端运行python3 spam.py时,程序正常等待你输入,输入完成后流程结束,所以不会报错。
解决办法
- 推荐方案:隔离脚本执行代码
把仅需直接运行脚本时才执行的代码放到if __name__ == '__main__':代码块中,这样导入模块时不会执行这部分代码,只有直接运行脚本时才会触发。修改后的spam.py代码如下:if __name__ == '__main__': input() - 特殊场景处理(不推荐)
如果你确实需要在导入时执行input(),那在交互式环境执行import spam后,必须输入内容并回车结束输入(Unix/Linux下也可用Ctrl+D,Windows用Ctrl+Z结束输入),但这种做法会导致导入模块时必须手动输入,实用性很低。
内容的提问来源于stack exchange,提问作者User
相关产品推荐
相关产品推荐

