diff options
Diffstat (limited to 'kpov_judge/instructions_extractor.py')
-rw-r--r-- | kpov_judge/instructions_extractor.py | 43 |
1 files changed, 30 insertions, 13 deletions
diff --git a/kpov_judge/instructions_extractor.py b/kpov_judge/instructions_extractor.py index 5574389..4e00dc5 100644 --- a/kpov_judge/instructions_extractor.py +++ b/kpov_judge/instructions_extractor.py @@ -2,23 +2,40 @@ import glob import os.path +import os from bson.son import SON import sys +def print_instructions(p, fname): + try: + print "---------------" + l = p.split(os.sep) + l1 = [] + for i in xrange(len(l)): + f = os.path.join(*l[:i+1]) + if os.path.islink(f): + s = "{0} ({1})".format(l[i], os.path.split(os.readlink(f))[1]) + else: + s = l[i] + l1.append(s) + print p + print " - ".join(l1) + with open(os.path.join(p, fname)) as f: + task_code = compile(f.read(), fname, 'exec') + exec(task_code) + for lang, text in instructions.iteritems(): + print("Language: {0}".format(lang)) + print(text.encode('utf-8')) + print("") + except Exception, e: + print e + pass if __name__ == '__main__': l = glob.glob(sys.argv[1]) l.sort() - for week in l: - print "---------------" - for part in ['preparation', 'evaluation']: - try: - print week.split('/')[2], '-' , part, ':' - with open(os.path.join(week, part, 'task.py')) as f: - task_code = compile(f.read(), 'task.py', 'exec') - exec(task_code) - print instructions['si'].encode('utf-8') - except Exception, e: - print e - pass - + for d in l: + for root, dirs, files in os.walk(d, followlinks=True): + for fname in files: + if fname == 'task.py': + print_instructions(root, fname) |