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

2024-10-03 04:31: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);
}

Tags: 文件insearchvarlinefile1tempcpp
1条回答
网友
1楼 · 发布于 2024-10-03 04:31:18

for var, line in file1:行中出现“to many values to unpack”错误,因为文件遍历只返回一个值,而不是每个步骤中返回多个值。将此行改为下表:

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

更新:当前代码只返回函数的内容。你知道吗

相关问题 更多 >