激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久91久久| 国产一区二区视频精品 | 男男羞羞视频网站国产 | 日韩在线黄色片 | 成人在线视频一区 | 日产精品一区二区三区在线观看 | 一边吃奶一边摸下娇喘 | 天堂二区| 国产精品久久99精品毛片三a | 国产精品久久久久久模特 | 中国的免费的视频 | 国产亚洲精品久久午夜玫瑰园 | 一区二区高清视频在线观看 | 91久久久久久久久久 | 亚洲午夜精选 | 狼人狠狠干 | 久久艹综合 | 91,视频免费看 | 一区二区精品在线 | 日日摸夜夜添夜夜添牛牛 | 香蕉秀| 日韩黄色免费电影 | 毛片免费一区二区三区 | 欧美另类69xxxxx 视频 | 国产激情视频在线 | 精品无吗乱吗av国产爱色 | 国产精品美女久久久久久不卡 | 毛片免费观看完整版 | 日韩区在线| 免费黄网站在线播放 | 中文字幕网在线 | 精品国产一区二区三区四区阿崩 | 骚av在线 | 国产精品视频一区二区三区四区国 | 久久久久久久久久综合 | 99影视在线视频免费观看 | 免看一级片| 欧美一级免费在线观看 | 中国成人在线视频 | 精品国产一区二 | 在线成人一区二区 |