解析文件夹中的多个xml文件

2024-05-28 23:55:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新来的,正在学习Python。我正在处理文件夹中的XML文件(5754个文件)。使用操作系统模块,我可以毫无问题地打印所有文件名。我可以解析一个文件并将其写入CSV文件而不会出现问题。我在解析文件夹中的所有文件时遇到问题。请帮忙,谢谢你。代码片段和下面的所有代码

这可以很好地打印所有5754个文件名

import os
for path, dirs, files in os.walk(r"C:\Users\dan\Desktop\parse"):
    for f in files:
        clinical = os.path.join(path, f)
        print(clinical)

输出: C:\Users\dan\Desktop\toparse\abc000xxxx\ABC 00009932.xml C:\Users\dan\Desktop\toparse\ABC 0000xxxx\ABC 00009945.xml C:\Users\dan\Desktop\toparse\ABC 0000xxxx\ABC 00009958.xml

工作代码解析:写入CSV

import csv
import xml.etree.ElementTree as ET
import os

tree = ET.parse("ABC00000102.xml")
root = tree.getroot()

with open('names.csv', 'w', newline='') as csv_file:
    writer = csv.writer(csv_file)

    for child in root.iter():
        key = child.tag
        value = child.text
        writer.writerow([key, value])

我的文件夹代码打印所有文件,但下面有错误 代码

import csv
import xml.etree.ElementTree as ET
import os

with open('names.csv', 'w', newline='') as csv_file:
    writer = csv.writer(csv_file)

for path, dirs, files in os.walk(r"C:\Users\dan\Desktop\parse"):
    for f in files:
        clinical = os.path.join(path, f)
        print(clinical)

tree = ET.parse("clinical")
root = tree.getroot()

for child in root.iter():
    key = child.tag
    value = child.text
    writer.writerow([key, value])

错误 回溯(最近一次呼叫最后一次): 文件“C:/Users/dan/PycharmProjects/clinicals/example.py”,第14行,在 tree=ET.parse(“临床”) 文件“C:\Users\dan\AppData\Local\Programs\Python37-32\lib\xml\etree\ElementTree.py”,第1197行,在parse中 parse(源,解析器) 文件“C:\Users\dan\AppData\Local\Programs\Python37-32\lib\xml\etree\ElementTree.py”,第587行,在parse中 源代码=开放(源代码,“rb”) FileNotFoundError:[Errno 2]没有这样的文件或目录:“clinical” 进程已完成,退出代码为1


Tags: 文件csvpath代码inimportchildfor
1条回答
网友
1楼 · 发布于 2024-05-28 23:55:38

您正在调用ET.parse("clinical"),它在您当前工作的目录中查找名为“clinical”的文件

如果希望它打开由clinical变量指定的路径,则需要执行ET.parse(clinical)

此外,如果您打算解析找到的每个文件,则需要修复缩进,以确保缩进发生在for循环中。目前,您的代码将只解析它在目录中找到的最后一个文件,因为解析发生在循环之后

相关问题 更多 >

    热门问题