2016-05-30 73 views
0

我想編寫一個程序來編輯配置文件,以線和文本被分解成「段」搜索和附加在python

我要搜索的文件,找到「正確的」段落 - 容易可以用正則表達式來完成。

但是從那裏我想下去幾行文字的段落/大塊的中間並追加到行尾,或者複製行做一些事情,然後寫回行。

例如

define object { 
     objectName name_to_check 
     useless_info asdfasdf 
     members  member1 member2 .... <- line I want to append to 
} 

我似乎無法找到一個方法來做到這一點網上,任何幫助,將不勝感激。

+0

你將不得不閱讀文件,找到你想要添加行的地方 - 使用正則表達式,然後修改數據並將其寫回文件。 – SilentMonk

+0

你需要閱讀關於Python的StringIO。讓我們看看一些編碼.. – Merlin

回答

0

所以我設法得到的東西的工作(只需要添加一個循環來寫珥文件)

Ar = [] 
      file = open("path/To/File", "r") 
      for line in file: 
        Ar.append(line) 
      pattern = "(\s*hostgroup_name\s*"+host_group+"\s*)" 
      p1 = re.compile(pattern) 
      for i, line in enumerate(Ar): 
        #print(line) 
        if p1.match(line): 
          #print(line) 
          Ar[i+2] = Ar[i+2][:-1] 
          Ar[i+2] += " " + host + "\n" 
          print(Ar[i+2]) 
          break 

主機和HOST_GROUP是我在上面聲明的變量。

感謝幫助的人,但如果他們更有效的方式來做到這一點我都耳熟能詳。

0

您可以將文件讀入字符串,然後使用字符串拆分。比方說,你有三條線:

config item one: True 
config item two: "A" 
config item three: 42 

從這個問題How to split a string into a list?和「\ n」分隔符的線分開使用的答案,你會得到3串,每一個從你的文件的單行列表。

搜索並更改要編輯的行,然後將所有行寫入文件(覆蓋現有文件)。這裏是怎麼寫的字符串的文件列表涵蓋:Writing a list to a file with Python

+0

是啊,這就是我在想什麼(現在工作)讀取文件到列表中,經歷列表,直到我從運行時生成的正則表達式匹配,提前幾行,編輯,然後覆蓋文件。 我只是覺得它有點低效。 –

+1

你的答案是肉的鏈接。在答案中至少包含一行代碼通常更有幫助。 –