国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲免费看片 | av成人免费| k8久久久一区二区三区 | 久久av一区二区三区亚洲 | 精品在线一区 | 成人二区 | 一级特黄a免费观看视频 | 91精品国产综合久久久久久丝袜 | 欧美日本韩国一区二区三区 | 中文字幕在线观看一区二区三区 | 激情在线视频 | 在线视频亚洲 | 国产黄色精品 | 亚洲电影二区 | 91仓库| 高清视频一区 | 日韩电影在线看 | 欧美大成色www永久网站婷 | 日本久久久久久 | 国产香蕉视频 | 亚洲精品成人免费 | 免费国产网站 | 亚洲一区欧美 | 另类视频在线 | av激情在线| 日比视频网站 | 国产日韩精品视频 | 综合色爱| 国产高清免费视频 | 国产在线小视频 | 91丝袜| 涩涩视频在线观看 | 亚洲精品日本 | 国产精品综合久久 | 国产精品免费大片 | 国产日韩精品久久 | 婷婷国产成人精品视频 | 91精品国产九九九久久久亚洲 | 永久av| 99视频在线免费 | 求av网站|