Python 3.5 프로 그래 밍 은 IIS WEB.CONFIG 를 수정 하 는 방법 예제 입 니 다.

6302 단어 PythonIISWEB.CONFIG
이 글 은 Python 3.5 프로 그래 밍 이 IIS WEB.CONFIG 를 수정 하 는 방법 을 실례 로 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.

#!/usr/bin/env python3.5
# -*- coding:utf8 -*-
from xml.etree.ElementTree import ElementTree,Element
def read_xml(in_path):
  """
       XML  
  :param in_path: XML  
  :return:
  """
  tree = ElementTree()
  tree.parse(in_path)
  return tree
def write_xml(tree,out_path):
  """
   XML    
  :param tree:
  :param out_path:    
  :return:
  """
  tree.write(out_path,encoding="utf-8",xml_declaration=True)
def if_match(node,kv_map):
  """
                    
  :param node:   
  :param kv_map:          MAP
  :return:
  """
  for key in kv_map:
    if node.get(key) != kv_map.get(key):
      return False
    return True
def find_nodes(tree,path):
  """
               
  :param tree:XML 
  :param path:    
  :return:
  """
  return tree.findall(path)
def get_node_by_keyvalue(nodelist,kv_map):
  """
                 ,    
  :param nodelist:     
  :param kv_map:         MAP
  :return:
  """
  result_nodes =[]
  for node in nodelist:
    if if_match(node,kv_map):
      result_nodes.append(node)
  return result_nodes
def change_node_properties(nodelist,kv_map,is_delete =False):
  """
    、  、            
  :param nodelist:     
  :param kv_map:       MAP
  :param is_delete:
  :return:
  """
  for node in nodelist:
    for key in kv_map:
      if is_delete:
        if key in node.attrib:
          del node.attrib[key]
      else:
        node.set(key,kv_map.get(key))
def change_node_text(nodelist,text,is_add=False,is_delete=False):
  """
    、  、         
  :param nodelist:     
  :param text:       
  :param is_add:
  :param is_delete:
  :return:
  """
  for node in nodelist:
    if is_add:
      node.text += text
    elif is_delete:
      node.text = ""
    else:
      node.text = text
def create_node(tag,property_map,content):
  """
        
  :param tag:    
  :param property_map:      MAP
  :param content:             
  :return:   
  """
  element =Element(tag,property_map)
  element.text =content
  return element
def add_child_node(nodelist,element):
  """
            
  :param nodelist:     
  :param element:    
  :return:
  """
  for node in nodelist:
    node.append(element)
def del_node_by_tagkeyvalue(nodelist,tag,kv_map):
  """
                ,    
  :param nodelist:      
  :param tag:      
  :param kv_map:         
  :return:
  """
  for parent_node in nodelist:
    childree = parent_node.getchildren()
    for child in childree:
      if child.tag == tag and if_match(child,kv_map):
        parent_node.remove(child)
def config_file_rw(file):
  """
   XML             IIS
  :param file:     
  :return:
  """
  import re
  x =re.compile("<ns0:")
  y = re.compile("</ns0:")
  z = re.compile("xmlns:ns0")
  with open(file,"r",encoding="utf-8") as f:
    txt = f.readlines()
    for i, line in enumerate(txt):
      if x.search(line):
        txt[i] = x.sub("<", line)
      elif y.search(line):
        txt[i] = y.sub("</", line)
      elif z.search(line):
        txt[i] = "<configuration>
" with open(file,"w",encoding="utf-8") as fw: fw.writelines(txt) fw.close() print(" %s, !"%file) if __name__ == "__main__": #1. xml tree = read_xml("web.config") # print() nodes = find_nodes(tree, "connectionStrings/") # result_nodes =(get_node_by_keyvalue(nodes,{"name":"strConnection_HuaChenShiYou"})) # change_node_properties(result_nodes,{"connectionString":"UwreW/Obe4fGk2CFW4uE6iZWaPAVn0nePXIrtNRApxEGLv6SHetFg6b%2BMLFhg9myAr2EI2b3FgHtKHOKVcjz5DPoV8%2BMAvpzqlEZP2JZqrVEofP3AulFUZbTLfmndYFRqIytlxSCeHr2A79EWHH9/xg0eSgsdvWd"}) # #2. # #A. # nodes = find_nodes(tree, "processers/processer") # #B. # result_nodes = get_node_by_keyvalue(nodes, {"name":"BProcesser"}) # #C. # change_node_properties(result_nodes, {"age": "1"}) # #D. # change_node_properties(result_nodes, {"value":""}, True) # # #3. # #A. # a = create_node("person", {"age":"15","money":"200000"}, "this is the firest content") # #B. # add_child_node(result_nodes, a) # # #4. # # # del_parent_nodes = find_nodes(tree, "processers/services/service") # # # target_del_node = del_node_by_tagkeyvalue(del_parent_nodes, "chain", {"sequency" : "chain1"}) # # #5. # # # text_nodes = get_node_by_keyvalue(find_nodes(tree, "processers/services/service/chain"), {"sequency":"chain3"}) # change_node_text(text_nodes, "new text") # # #6. write_xml(tree, "new.config") config_file_rw("new.config")
파 이 썬 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 Python 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기