Python脚本可以用来生成并写入C++文件/程序吗?
我在实习期间做单元测试。我的老板总是告诉我,找到自动化的方法是最好的,所以我在想,能不能用Python写个脚本,读取一个有特定结构和语法的文本文件,然后根据这个文本文件生成一个C++文件呢?
我正在使用Google-Test进行单元测试,我觉得这会是公司工具的一个不错补充,但我想知道这样做是否可行,还有没有其他人做过类似的事情。
谢谢!
2 个回答
3
Josh的回答很好,如果你想要扩展功能的话。不过我想你可能会想看看一个简单例子是怎么运作的。大部分工作都是通过subprocess
这个模块来完成的。在这里,我使用的是一台Linux机器,所以我的编译器是gcc
,但其实你可以很容易地根据你自己的系统架构来调整这个设置。
import subprocess
code = r'''
#include <stdio.h>
int main() {
for(int i=0;i<5;i++) {
printf("Testing %d\n",i);
}
return 0;
}
'''
f_cpp = "test.cpp"
with open(f_cpp,'w') as FOUT:
FOUT.write(code)
# Compile the program
f_exec = "./myprogram"
compile_cmd = "gcc {} -o {}".format(f_cpp, f_exec)
subprocess.call(compile_cmd, shell=True)
# Run the program
p = subprocess.Popen(f_exec, shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)
# Step through the output
for line in p.stdout:
print line
这个代码的输出结果是:
Testing 0
Testing 1
Testing 2
Testing 3
Testing 4
7
当然可以做到。我之前也做过这件事(我们内部用Python生成一些C++代码来读取和写入数据结构)。你可以使用自定义脚本(就像@Kevin在评论中说的,这个很简单),或者如果你想要更有结构的方法,可以使用像Cog这样的Python工具。
不过,任何事情都有利弊。用Python生成C++代码意味着开发者需要学习另一种语言(这没什么大不了的,Python值得学习,而且和C++很搭配),而且在开发和构建过程中会多出一个间接层,还有额外的(Python)代码需要维护。如果你选择这个方法,记得简单是美德;不要陷入试图写一个能“生成各种各样C++代码”的复杂框架的陷阱。