首页 > 解决方案 > 制作 xmls 的修改副本并将它们放在相应的文件夹中?

问题描述

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

文件夹图像

每个xml都是这样的:

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

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

我希望为每个文件夹(请参阅图片以获取帮助)制作您看到的每个 xml(有 2 个 xml)的副本,其中包含数字: <CODE_OK>51041</CODE_OK>在 xml 中替换为文件夹名称中的数字。

这是创建文件夹的代码:

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))

如何继续描述的想法?

你至少能告诉我从哪里开始。这令人困惑。

标签: pythonxmlelementtree

解决方案


你可以参考这个:

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


推荐阅读