如何从cpp文件(python)中复制特定部分?

时间:2015-08-11 10:30:18

标签: python

我想从临时文件中的cpp文件中复制一个特定的部分,因为我想将该部分放在另一个cpp文件中,再次在特定的位置,但我不知道我该怎么做。我试过这样的事情:

def search( var ):
    with open('...', 'r') as file1:
      for i, line in enumerate(file1):
         if var in line:
               return i       


x='setRunnable'
print search( x )
var = search( x )
print var
temp = tempfile.TemporaryFile(delete=False)


with open('...', 'r') as file1:
 for var, line in file1:
      if (line != '}'):
               temp.write(line1)

temp.seek(0)               
temp.read()

但我记得:"要打开包装的许多价值" .. 有人可以帮忙吗?

更新: 输入: 文件1:

void doMemStage01()
{
  g_runFlow(g_flowm);                                                
  g_runFlow2(g_flowm2)                                 
}
void setRunStage01()
{
        g_runBli(60);
        g_runCoffe(100);
}

文件2:

void doMemStage02()
{
  f_runFlow(g_flowm);                                                
  f_runFlow2(g_flowm2);                                 
}
void setRunStage02()
{
        f_runBli(60);
        f_runCoffe(100);
}

输出应该在file1中,如下所示: 文件1:

void doMemStage01()
{
  g_runFlow(g_flowm);                                                
  g_runFlow2(g_flowm2);
  f_runFlow(g_flowm);                                                
  f_runFlow2(g_flowm2);                                    
}
void setRunStage01()
{
        g_runBli(60);
        g_runCoffe(100);
        f_runBli(60);
        f_runCoffe(100);
}

1 个答案:

答案 0 :(得分:1)

要打开的许多值""在for var, line in file1:行中引发的错误,因为文件遍历仅返回一个值,而不是每个步骤中的多个值。将此行更改为以下形式:

for var, line in enumerate(file1):

另外,我建议您使用re库,不要使用search函数,并使用以下代码替换您的代码:

func_code = ""
x="setRunnable"

with open('...', 'r') as file1:
    func_code = re.search('void\s+%s\w*\(\)[^{]*.*([^}]+)' % x, file1.read(), re.M)

if func_code:
    with open('temp.ccp', 'w') as file2:
        file2.write(func_code.groups()[0].strip() or '')

    print func_code.groups()[0].strip()
else:
    print '%s not found!' % x

更新:当前代码仅返回功能内容。