作业要求读取standard input,对应example.txt时该如何实现?
标准输入读取要求说明
要求的具体含义
- 标准输入(standard input,简称stdin)是操作系统为运行中的程序默认提供的输入数据流,不需要程序绑定读取固定路径、固定名称的磁盘文件。
- 禁止直接读取
example.txt的核心原因是适配自动化测试逻辑:测试系统运行你的代码时,会直接将多组不同的测试用例数据注入到程序的标准输入流中,运行环境不会存放example.txt文件,如果你的代码里硬编码了open("example.txt")这类读取指定文件的逻辑,测试时会直接抛出文件不存在的错误,无法通过用例。 - 官方给出的参考代码逻辑已经完成了标准输入的读取处理:
import sys for l in sys.stdin.read().splitlines(): pass # do stuff with each line
你只需要把逐行处理的业务逻辑替换掉pass即可,不需要额外处理文件打开、关闭、路径解析等操作。
基于example.txt的正确实现&调试方法
你全程不需要修改读取逻辑硬编码读本地文件,只需要按以下步骤操作即可:
- 代码实现直接复用官方给的标准输入读取框架,所有业务逻辑都在上述的行循环中完成,不要添加任何读取指定磁盘文件的代码。
- 本地调试时使用输入重定向功能,将
example.txt的内容注入到程序的标准输入中,和自动化测试系统的运行逻辑完全一致:- Windows(CMD/PowerShell)、Linux、macOS环境下都可以在终端执行以下命令运行:
其中python 你的脚本文件名.py < example.txt<就是输入重定向符号,会把后面文件的内容作为标准输入传给前面的程序。- 如果你使用IDE调试,可以在对应脚本的运行配置项中找到「重定向输入到文件」相关选项,选中你本地的
example.txt即可,同样不需要修改代码。
注意:不要采用本地调试写死读
example.txt、提交前再改回读标准输入的做法,很容易出现忘记修改直接提交的问题,直接采用标准输入+重定向的方式调试即可避免这类问题。
内容的提问来源于stack exchange,提问作者Franci
相关产品推荐
相关产品推荐

