python小白xml轉json之路

2021-09-09 06:50:12 字數 1938 閱讀 4851

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檔案路徑名 ...