新的Python评测脚本前瞻
感觉上一个评测脚本太没挑战性了,重写了一个,用到了类、异常、子进程管理、通配符、正则表达式、INI文件…… 一大堆东西。
目前主要功能基本写完了,先show:
这是我测试用的评测配置文件:
[problem]
Name = 测试题目 for test
Info = 测试题目测试测试测试!Hello World
[source]
Custom = [.py: python2 %S] [.cx: cp %S %E.cpp, g++ %E.cpp -O3 -o %E.exe, %E.exe] [.rb: ruby %S]
FileName = pet.cpp $$ pet.pas $$ pet.c $$ pet.py $$ pet.cx
Dir = ./src/pet
[data]
InFile = [./data/pet/*.in1, ./data/pet/*.in2]
OutFile = [./data/pet/*.ans]
[execute]
TimeLimit = 1
MemoryLimitInKB = 800
Input = $$STD$$, pet.in
Output = $$STD$$
[report]
CompareMethod =
CompareFunction = IgnoreEmptyLine
; CountFunction =
ReportFormat = TXT
ReportFile = pet_report.txt
看起来还是很高级的吧。report中的一些功能还没搞定,不过应该不难了。
评测后的输出结果:
[Ploblem Info]
Name: 测试题目 for test
Info: 测试题目测试测试测试!Hello World
Time limit: 1.00 s
Time limit: 800 KB
[Player Info]
Player name: cuihao
Source path: /home/cuihao/pytest/src/pet/cuihao/pet.c
TEST #0: A (time: 0.01 sec mem: 380 KB)
TEST #1: Timeout
TEST #2: Timeout
TEST #3: W (time: 0.01 sec mem: 376 KB)
Score: 25
[Player Info]
Player name: blank
Source path: /home/cuihao/pytest/src/pet/blank/pet.py
TEST #0: Memory exceeds
TEST #1: Timeout
TEST #2: Memory exceeds
TEST #3: Memory exceeds
Score: 0
[Player Info]
Player name: testrt
Source path: /home/cuihao/pytest/src/pet/testrt/pet.cx
TEST #0: W (time: 0.01 sec mem: 160 KB)
TEST #1: A (time: 0.00 sec mem: 0 KB)
TEST #2: A (time: 0.01 sec mem: 88 KB)
TEST #3: stdin IOError
Score: 50
为了能往Windows移植,我尽量都用平台无关的python代码。不过有些实在无法解决的,比如内存用量统计问题,还是用了只能在Linux使用的代码。
不久应该就可以搞定了。