import xml.etree.elementtree as et
from elasticsearch import elasticsearch
from elasticsearch import helpers
import os
def packnodes(nodes,m):
if len(nodes) < 0:
return
tag = nodes.tag
text = nodes.text
m[tag] = {}
m[tag].update(nodes.attrib)
if text != none:
if text.strip() != "":
m[tag] = text
for node in nodes:
packnodes(node, m[tag])
return m
if __name__ == '__main__':
mvalue =
actions =
es = elasticsearch(hosts='', port=9200) # ip埠
if es.indices.exists(index='hz_windows-event'): # 判斷index是否存在,存在則刪除,然後建立
es.indices.delete(index='hz_windows-event')
action =
path = '/home/windows_xml' # 檔案路徑
allfiles = os.listdir(path) # 得到資料夾下的所有檔案的集合[192.168.***.xx, ......]
j = 0
while j < len(allfiles):
for file in files: # 遍歷資料夾
if not os.path.isdir(file): # 判斷是否為資料夾,不是資料夾才開啟
xml = path + "/" + allfiles[j] + "/" + file # 開啟檔案
# 建立字典
# 建立文件樹
tree = et.elementtree(file=xml)
root = tree.getroot()
for nodes in root:
m = {}
packnodes(nodes, m)
for mjson in mvalue:
clean_str_t = str(mjson).replace("\\t", '') # 將第一條json檔案轉換成str後,把\t替換成''
new_clean_dict = eval(clean_str_none) # 將刪除\t後的str轉換成dict
useablefile = new_clean_dict['event'] # 去掉event層
action['_source'] = useablefile
if len(actions) == 2000: # 達到兩千條後,批量寫入
helpers.bulk(client=es, actions=actions)
actions.clear()
helpers.bulk(client=es, actions=actions)
j += 1
print('all down!')
我也是一名python小白,短短的**裡邊也有很多坑必須得踩,但是結果還是好的。發出來希望可以幫助大家,更希望可以和大家討論研究。
q:913793582
有不對的地方希望大神斧正!!!
C 大白轉Python小白之路
此部落格的內容有 異常處理 c while cin str 在python中的形式 字元的值 匯入模組 python的編碼注釋 頭部 usr bin python keyboardinterrupt 使用者中斷執行 通常是輸入ctrl c 認識它是因為我想解決python中while cin s 的...
python解析xml字串與xml轉json
一 python解析xml字串 from xml.dom.minidom import parsestring xml str uap 2osy90 0410000043 舊部門0410000043 999911 0432000000 新部門0410000043 999911 0432000000 ...
xml字串轉物件xml檔案轉物件
判斷是否是ie瀏覽器和非ie瀏覽器的方法有多種,在此只介紹用例中的方法 1 解析xml字串,得到xml物件的方式 function createxml str else 2 解析xml檔案,將其轉換為xml物件的方式 js view plain copy axmlfilename是xml檔案路徑名 ...