2012-09-05 49 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():] 
相關問題