【发布时间】:2022-11-12 05:24:51
【问题描述】:
我正在使用 python pandas 和烧瓶来完成一些后处理任务(分析和可视化)。到目前为止,我通过 pd.read_csv、pd.read_xlsx 上传/读取 *.csv *.xlsx 和 *.xls。一切都很安静。
现在我有一个 *.xml 文件作为数据源,并根据我的习惯模式进行了尝试。
所以我尝试了:
<form action="/input" method="POST" enctype="multipart/form-data">
<input class="form-control" type="file" name="file">
<input type="submit" class="btn btn-outline-secondary" name="Preview" value ="Preview Data" > </input>
from flask import Flask, render_template,request, render_template
import pandas as pd
import xml.etree.ElementTree as ET
@app.route("/input", methods=['POST', 'GET'])
def input():
if request.method == 'POST':
if request.form['Preview'] == "Preview Data":
file = request.files['file']
filename = file.filename
if '.xml' in filename:
content = pd.read_xml(file, parser='lxml')
但是当我通过表单将 .xml 文件传递给应用程序时。我得到错误:
File "C:\ProgramData\MiniforgeEnvs\TestEnv\lib\site-packages\pandas\io\xml.py", line 627, in _parse_doc
with preprocess_data(handle_data) as xml_data:
AttributeError: __enter__
我尝试检查不同的选项:
- 当我使用 inbuild xml.etree 包时,它工作正常:
import xml.etree.ElementTree as ET if '.xml' in filename: tree = ET.parse(file) root = tree.getroot() print(root[1][0][1].attrib)- 当我将 .xml 直接从应用程序目录加载到 pd.read_xml() 时,它也能正常工作:
if '.xml' in filename: content = pd.read_xml('SampleExport.xml', parser='lxml')- 我尝试了不同的 prasers:“lxml”和“etree”
但是最后,当我通过 Form/input 传递 .xml 并使用 pd.read_xml(file,parser='lxml') 时,我从上面得到了错误。
【问题讨论】:
标签: python pandas xml flask attributeerror