如何在Spyder 5.5.0中为Python脚本传入参数/重定向stdin?
在Spyder 5.5.0中为Kattis脚本传入测试输入的解决方法
针对你在Spyder里测试Kattis脚本的问题,这里提供几个实用的解决办法:
方法1:用代码临时重定向stdin(推荐,不影响Kattis提交)
在脚本开头加一段仅本地测试用的代码,提交Kattis时删掉或注释即可,完全符合Kattis从stdin读取输入的要求:
import sys # 本地测试专用,提交Kattis时务必删除/注释 if __name__ == "__main__": sys.stdin = open("test.txt", "r")
这样运行脚本时,会自动把test.txt的内容作为stdin输入,不用手动敲控制台,也不用改核心逻辑。
方法2:用IPython控制台直接执行重定向命令
打开Spyder的IPython控制台,切换到脚本所在的目录后,直接输入:
%run myscript.py < test.txt
IPython支持这种输入重定向语法,能直接把测试文件内容传给脚本。
方法3:设置外部控制台不自动关闭
如果坚持用外部控制台运行:
- 按Ctrl+F6打开运行配置窗口
- 切换到「控制台」选项卡,勾选在脚本结束后保持控制台打开
- 然后手动打开系统命令行(CMD/PowerShell),切到脚本目录,执行
python myscript.py < test.txt,窗口就不会跑完就关了,能正常看输出。
方法4:修改Spyder全局运行设置
- 点击顶部菜单栏「工具>首选项>运行」
- 把「默认运行方式」改成「外部系统控制台」
- 勾选「在脚本结束后保持控制台打开」
- 之后运行脚本时,外部控制台会保留,你可以手动在控制台里输入重定向命令执行测试。
内容的提问来源于stack exchange,提问作者TitanCode
相关产品推荐
相关产品推荐

