[英]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.