Python argv 和 cmd

Python argv and cmd

我正在尝试制作一个 Python 可以自动批改考试的程序,我有多余的时间,不想等待我的老师手动批改... 无论如何,当我像这样使用 python argv 时:

import sys

def hello(a):
    print(a)

a = sys.argv[1:]
hello(a)

我想插入一个列表,由于 argv 的工作方式,我不能再只插入一个变量,而且我不知道列表会有多长,因为并非所有任务都相同。我正在使用 subprocess.check_output 到 return 在我的检查器 运行 将它输入 cmd window 之后的程序输出...现在如果有人知道更好的方法来纠正程序而不让学生用 sys.argv 替换他们的输入(如果有更好的方法在你 运行 时将参数输入到单独的 python 程序)或者可以告诉我如何修复argv 问题?

我建议您查看 OptionParser

您可以使用 Popen.communicate 而不是 check_output:

echo.py:

print(input())

test.py:

from subprocess import Popen, PIPE
p = Popen(['python3', 'echo.py'], stdout=PIPE, stdin=PIPE, stderr=PIPE)
out, err = p.communicate(input="hello!".encode())
assert out.decode().strip() == "hello!"