在数组中逐行搜索python 2.7文件

时间:2019-01-16 14:50:11

标签: python python-2.7

我有一个文件如下:

(...)
- src: git+[server]
  name: main
  version: master

- src: git+[server]
  name: sec
  version: master

- src: git+[server]
  name: compiler
  version: master

- src: git[server]
  name: libs
  version: master

- src: git[server]
  name: crosscomp
  version: master
(...)

我只想在

之后更改版本
  

名称:主要

  

名称:秒

所以我的想法是将整个文件逐行读取到数组中,并检查该行是否以名称:master或name:sec开头。 (带有startswith()

但是发现后如何访问该行?

2 个答案:

答案 0 :(得分:3)

只要找到匹配的行,就可以成对处理这些行并更新下一行。您需要在末尾用新行覆盖文件的内容。

with open(filename, 'r+') as f:
    lines = f.readlines()

    for i in range(len(lines)-1):
        if 'name: main' in lines[i] or 'name: sec' in lines[i]:
            lines[i+1] = lines[i+1].replace('master', 'newversion')

    f.seek(0)
    f.truncate()
    f.writelines(lines)

答案 1 :(得分:0)

maseterIndex = [i for i, x in enumerate(array) if x == "name: master"]
secIndex = [i for i, x in enumerate(array) if x == "name: sec"]
mergedlist = maseterIndex + secIndex
for index in mergedlist:
    #do something with next line
    print array[index+1]