2012-09-05 48 views
-2

可能重复不存在的话:
Add a line to a file if it not exist using python行添加到一个文本文件,如果使用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" />如果它已经在文件 存在怎样才能做到这一点?

+0

无不是一个重复 这是一个XML文件,除H我iam问一个文本文件和一个文本文件不能使用任何xml API读取。所以我重新发布它。我能够使用FileInput模块添加行,只是要求你只关于避免重复 – user1565954

+0

xml格式的文件应该可以使用xml解析器或html解析器(如xmlTree或Beautifulsoup)来处理... ... –

+0

http://stackoverflow.com/questions/12275255/add-a-line-to-a-file-if-it-not-exist-using -python ...没有人... –

回答

-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 
+0

现在,为什么downvote没有评论?我不能将这个答复看作是“极其拙劣,没有付出努力的帖子,或者是一个明显而且可能危险的错误答案”,所以如果你[谁低估]认为评论或标记它会更好这是可以改善的。 – Bakuriu

0

用文本文件的文本:

import re 

match = = re.search('\<ImportGroup Label="ExtensionTargets"\>', text) 
text = text[:match.end()] +'<Import Project="$(ProjectName).targets" />\n'+ text[match.end():] 
相关问题