制作xml的修改后的副本,并将其放入相应的文件夹中?

时间:2018-08-06 08:35:09

标签: python xml elementtree

我有这个文件夹,里面有这些文件:

folder image

每个xml都是这样的:

<?xml version="1.0" encoding="ASCII"?>
<Metadata version="1.0">
    <CODE_OK>51041</CODE_OK>
    <DeliveryDate>13/08/2018</DeliveryDate>

您在图片中看到的文件夹为空。

我想为每个文件夹(请参阅图片获得帮助)制作每个xml(有2个xml)的副本,您看到的xml编号为:<CODE_OK>51041</CODE_OK>,名称中的数字替换为他们的文件夹。

以下是制作文件夹的代码:

import pandas as pd
import os
path = path
df = pd.read_csv(path)
for i in df["col1"].astype(str):
    os.mkdir(os.path.join(path, i))

如何进行所描述的想法?

您至少可以告诉我从哪里开始。这很令人困惑。

1 个答案:

答案 0 :(得分:0)

您可以参考以下内容:

import os
from xml.dom import minidom
import shutil
folder_path = "D:/py_projects/test"
folder_name = "test"
root = os.listdir(folder_path)
xmls = []
folders = []
for file in root:
    if file.find(".xml") != -1:
        xmls.append(file)
    else:
        folders.append(file)
for xml in xmls:
    for folder in folders:
        shutil.copy(folder_path+"/"+xml, folder_path+"/"+folder+"/"+xml)
        dom = minidom.parse(folder_path + "/" + xml)
        root = dom.documentElement
        code_ok = root.getElementsByTagName("Code_OK")
        for i in range(len(code_ok)):
            print(code_ok[i].firstChild.data)
            code_ok[i].firstChild.data = folder
            print(code_ok[i].firstChild.data)
        fileHandle = open(folder_path+"/"+folder+"/"+xml, 'w')
        dom.writexml(fileHandle, ' ', ' ', ' ', 'UTF-8')
        fileHandle.close()

我使用另一个xlm文件,因为您提供的文件不正确。 这是xlm示例:

<?xml version="1.0" encoding="utf-8"?>
<catalog>
    <maxid>4</maxid>
    <Code_OK>12324</Code_OK>
    <login username="pytest" passwd='123456'>
        <caption>Python</caption>
        <item id="4">
            <caption>test</caption>
        </item>
    </login>
    <item id="2">
        <caption>Zope</caption>
    </item>
</catalog>

的初始值为'1234',我有两个文件夹(“ test”中的“ 1”和“ 2”)。就像这样:1 结果如下:2