Python 测试读取sys.stdin格式的程序

Python 测试读取sys.stdin格式的程序,python,Python,我正在玩一些编程挑战,这些挑战将通过以下方式检查提交: python my_submission < in.txt > out.txt 因此,当我在Sublime文本中运行python程序(hit cmd+B)时,我可以看到我是否能够正确地读取输入,正确地处理一个测试用例,等等。。。。然后,当我的程序应该提交给提交评委时,我只推荐第二行和第三行 我只是想知道:这是处理这个问题的“首选工作流”吗?专业程序员是否编写了某种单元测试模板函数来实现这一点?首选的工作流是让shell执行重定

我正在玩一些编程挑战,这些挑战将通过以下方式检查提交:

python my_submission < in.txt > out.txt
因此,当我在Sublime文本中运行python程序(hit cmd+B)时,我可以看到我是否能够正确地读取输入,正确地处理一个测试用例,等等。。。。然后,当我的程序应该提交给提交评委时,我只推荐第二行和第三行


我只是想知道:这是处理这个问题的“首选工作流”吗?专业程序员是否编写了某种单元测试模板函数来实现这一点?

首选的工作流是让shell执行重定向,这样您就不必一直更改程序代码

但是您的IDE(升华文本)不允许您指定此类参数,因此它限制了您的选项

解决方案/变通办法:

  • 从shell启动程序。这意味着您需要始终在终端窗口和升华之间切换
  • 编写第二个程序,运行第一个程序并设置输入重定向。这样,您只需在sublime中切换选项卡
  • 使用
    fileinput
    模块,而不是直接读取
    stdin
    。请参阅,这将允许您为代码编写适当的单元测试。然后,您可以使用升华插件
  • import sys
    file = open('in.txt') 
    sys.stdin = file  
    
    for line in sys.stdin:
         case1 = line.split()
         some_function(case1)