hyytaojunming 发表于 2018-8-12 13:34:10

Python中文件操作

def fetch(backend):                      #定义一个查功能的函数  
    result = []                        #定义一个空列表
  
    with open('ha.conf', 'r') as f:         #以只读的方式打开ha.conf
  
      flag = False                  #定义一个标示符,并赋值为Fals
  
      for line in f:
  
            if line.strip().startswith('backend') and line.strip() == "backend " + backend:
  
                flag = True             #如果文件匹配到文件中的行,将falg的值设置为True
  
                continue               #跳出本次循环继续
  
            if flag and line.strip().startswith('backend'):
  
                break                  #如果匹配到下一个‘backend’则终止此次循环
  
            if flag and line.strip():
  
               result.append(line.strip()) #如果flag为true并且当前匹配到的行不是空行,则将当前的行添加到列表中
  
    return result
  

  
def add(backend, record):          #思路1
  
    result = fetch(backend)
  
    if not result:                # 无backend
  
      with open('ha.conf', 'r')as old, open("new.conf", 'w') as new:
  
            for line in old:
  
                new.write(line)
  
            new.write("\nbackend " + backend + "\n")    #在最后添加backend和record
  
            new.write(" " * 8 +record + "\n")
  
    else:      # 有backend
  
      if record in result:       #backend存在,record存在
  
            # 记录record
  
            pass
  
      else:                      #backend存在,record不存在
  
            result.append(record)#将record添加到内存中即result列表中
  
            with open('ha.conf', 'r') as old, open('new.conf', 'w') as new:
  
                continue_flag = False
  
                for line in old:
  

  
                  if line.strip().startswith('backend') and line.strip() == "backend " + backend:
  
                        continue_flag = True   # 定义一个标示符,并赋值为True
  
                        new.write(line)          #将当前行写入new.conf
  
                        for temp in result:
  
                            new.write(" " * 8 + temp + "\n")
  
                        continue
  

  
                  if continue_flag and line.strip().startswith('backend'):
  
                        continue_flag = False               #如果找到下一个backend,将conti_flag标记为false
  
                  if continue_flag:
  
                        pass
  
                  else:
  
                        new.write(line)
  
ret = fetch("    #查询
  
print(ret)
  

  
add('dayi.dayi123.org', "server 100.1.7.10 100.1.7.10 weight 20 maxconn 3000")#添加或修改
页: [1]
查看完整版本: Python中文件操作