可以使用python脚本生成和编写C ++文件/程序吗?

时间:2014-06-10 13:37:38

标签: python

我正在进行单元测试,作为我的实习生的一部分。我的老板总是告诉我,找到一种自动化方法是最好的方法,我想知道是否可以使用python,编写一个脚本,读取具有特定结构和语法的文本文件,然后生成一个基于所述文本文件的c ++文件?

我正在使用Google-Test进行单元测试,我认为这对公司工具来说是一个很好的补充,但我只想知道它是否可能以及是否有其他人做过类似的事情。

谢谢!

2 个答案:

答案 0 :(得分:7)

是的,这肯定是可行的。之前我已经完成了这个(我们在内部使用Python来创建一些C ++代码来读写结构)。你可以使用自定义脚本(比如@Kevin在他的评论中说, easy ),或者你可以使用像Cog这样的Python工具,如果你想要一个更结构化的方法

与任何事情一样,存在权衡。使用Python生成C ++代码意味着开发人员可以学习另一种语言(不是很重要,Python值得学习并很好地补充C ++),并且在开发和构建中有额外的间接层次进程,以及需要维护的额外(Python)代码。如果你走这条路,请记住简单是一种美德;不要试图写歌,跳舞,并生成各种可以想象的C ++代码"框架。

答案 1 :(得分:2)

如果你想要扩大规模,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