我正在写一个小python脚本来自动评估学生的家庭作业。我有一个框架,提交的作业被解压到一个临时文件夹中,我的脚本被调用,临时文件夹的路径作为参数。你知道吗
我的脚本首先复制一些我需要的额外文件,然后尝试编译c++代码,大致如下所示:
compilation_files = " ".join(glob.iglob("*.cpp"))
compilation_call = ["g++", "-std=c++14", compilation_files, "-o " + output_name]
subprocess.call(compilation_call)
g++
退出时出现以下错误:
g++: error: tests-main.cpp tests-small1.cpp small1.cpp: No such file or directory
g++: fatal error: no input files
我确信这些文件存在(毕竟glob
否则无法找到它们),并且子进程在正确的目录中执行。你知道吗
是我干的
print "ls: ", subprocess.check_output("ls")
print "pwd: ", subprocess.check_output("pwd")
print "files: ", compilation_files
要验证文件是否确实存在,请正确调用这些文件并在正确的目录中运行脚本。你知道吗
---编辑---
我可以通过传递shell=True
使脚本工作,但这也意味着手动转义shell的文件名。你知道吗
嗯,您正在用一系列参数调用一个子进程。第一个是要执行的命令的名称,下面是命令的参数,一次一个。你知道吗
所以你在执行这样的操作:
错误表明文件(单数文件而非复数文件)
"tests-main.cpp tests-small1.cpp small1.cpp"
不存在。你知道吗相反,您应该:
使每个单独的文件名位于其自己的参数列表项中。你知道吗
相关问题 更多 >
编程相关推荐