我想从临时文件中的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);
}
答案 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
更新:当前代码仅返回功能内容。