2016-05-30 69 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

你的答案是肉的链接。在答案中至少包含一行代码通常更有帮助。 –