一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python3.5編程實現修改IIS WEB.CONFIG的方法示例

Python3.5編程實現修改IIS WEB.CONFIG的方法示例

2020-12-02 00:51水·域 Python

這篇文章主要介紹了Python3.5編程實現修改IIS WEB.CONFIG的方法,涉及Python針對xml格式文件的讀寫以及節點操作相關技巧,需要的朋友可以參考下

本文實例講述了Python3.5編程實現修改IIS WEB.CONFIG的方法。分享給大家供大家參考,具體如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
#!/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>\n"
  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程序設計有所幫助。

原文鏈接:http://www.cnblogs.com/IPYQ/p/6281440.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产主播精品在线 | 精品乱lun小说 | 国产视频分类 | 亚洲国产精品综合欧美 | 午夜精品久久久久久久99蜜桃 | 日本精工厂网址 | 成人快插 | 99精品久久99久久久久久 | 图片一区| 国产91影院 | 无限资源在线观看高清 | 欧美大片一区二区三区 | 国产黄频在线观看高清免费 | 欧美一卡二卡科技有限公司 | ysav67| 天堂漫画破解版 | 国产精品资源在线观看网站 | 亚洲男女网站 | 日韩理论片在线看免费观看 | 99热er| 国产在视频线精品视频 | 欧美乱妇高清无乱码视频在线 | 99国产精品久久久久久久... | 国产亚洲sss在线观看 | 亚洲精品久久久WWW游戏好玩 | 欧美成人v视频免费看 | 久久er国产精品免费观看2 | 亚洲xxxxxhd奶水女人 | 精品无码人妻一区二区免费AV | 国产视频一二三区 | 美女靠逼免费网站 | 2021国产麻豆剧传媒新片 | 久久WWW免费人成一看片 | 亚洲视频观看 | 美女脱一光二净的视频 | 国产亚洲精品精品国产亚洲综合 | 插美女b| 歪歪漫画a漫入口 | 色综合中文字幕天天在线 | 国产综合社区 | 91大片淫黄大片在线天堂 |