-2

可能重复:
如果文件不存在,则使用 python 在文件中添加一行

我有一个文本文件如下:

  <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build" ToolsVersion="4.0">
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
</Project>

我想在和<Import Project="$(ProjectName).targets" />之间 添加一条线如下</ImportGroup></Project>

  <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build" ToolsVersion="4.0">
  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
  <ImportGroup Label="ExtensionTargets">
  </ImportGroup>
  <Import Project="$(ProjectName).targets" />
</Project>

我使用 fileinput 模块插入该行,但 <Import Project="$(ProjectName).targets" />如果它已存在于文件中,我不想添加我该怎么做?

4

2 回答 2

0

使用文本作为文件的文本:

import re

match = = re.search( '\<ImportGroup Label="ExtensionTargets"\>', text )
text = text[:match.end()] +'<Import Project="$(ProjectName).targets" />\n'+ text[match.end():]
于 2012-09-05T07:09:02.163 回答
-1

您应该阅读整个文件或足够的行并检查子字符串是否在内容中:

'<Import Project="$(ProjectName).targets" />' in file_content

或者您可以使用正则表达式使搜索更加健壮:

import re
regex = re.compile(r'<Import Project="\$\(ProjectName\)\.targets\s*/>')
if not regex.search(file_content):
    insert_line_into_file()
else:
    #the line already exists
于 2012-09-05T06:33:34.293 回答