簡體   English   中英

解析文件夾中的多個xml文件

[英]Parse multiple xml files in a folder

我是新手,正在學習 Python。 我正在處理文件夾中的 XML 文件(5,754 個文件)。 使用 os 模塊,我可以毫無問題地打印所有文件名。 我可以解析一個文件並寫入 CSV 文件而不會出現問題。 我在嘗試解析文件夾中的所有文件時遇到問題。 請幫助並感謝您。 代碼片段和下面的所有代碼。

這工作正常並打印所有 5,754 個文件名

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\\ABC0000xxxx\\ABC 00009932.xml C:\\Users\\dan\\Desktop\\toparse\\ABC 0000xxxx\\ABC 00009945.xml C:\\Users\\dan\\Desktop\\toparse00xxx0 \\ 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("clinical") 文件“C:\\Users\\dan\\ AppData\\Local\\Programs\\Python\\Python37-32\\lib\\xml\\etree\\ElementTree.py", line 1197, in parse tree.parse(source, parser) File "C:\\Users\\dan\\AppData\\Local\\Programs \\Python\\Python37-32\\lib\\xml\\etree\\ElementTree.py”,第 587 行,在解析中 source = open(source, "rb") FileNotFoundError: [Errno 2] 沒有這樣的文件或目錄:'clinical' 過程完成退出代碼為 1

您正在調用ET.parse("clinical") ,它會在您當前工作的目錄中查找名為“clinical”的文件。

如果您希望它打開由clinical變量指定的路徑,則需要改為執行ET.parse(clinical)

此外,如果您打算解析找到的每個文件,則需要修復縮進以確保它發生在 for 循環中。 目前,您的代碼只會解析它在目錄中找到的最后一個文件,因為您的解析發生在循環之后。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM