【发布时间】:2016-09-06 12:02:49
【问题描述】:
我有一个输入文件列表和一个预期的输出文件,我想编写一个自动评分器来完成接受 python 程序的工作,在输入文件上运行它,并将其输出与输出文件进行比较。我使用的方法是使用python的os模块使用os.system('python program.py > actual.out')运行程序,然后再次使用os.system()在输出和expected.out之间进行差异。
我目前面临的问题是从文件中读取输入,因为给出的程序是从控制台读取的。那么,我应该如何重定向文件中的输入,以便它可以被 program.py 中的 sys.stdin 读取。
import os
def grade(program_py_file_handler,input_dir,output_dir):
#create temporary file for program.py using program_py_file_handler
#one by one read all files from input_dir
#run program.py using os.system generating a temp file
#do diff be temp file and expected file
有没有更好的方法来执行差异而不使用 diff 命令?
要将输出从 program.py 重定向到我使用 python program.py>tem.out 的文件。我应该使用什么等价物将输入文件重定向到 progam.py 以便在我在 program.py 中使用 sys.stdin 的任何地方,它都会从传递的文件中读取? (修改 program.py 不是一个选项。)
【问题讨论】:
-
你试过的代码在哪里?
标签: python file python-3.4 file-handling