在Python中打开csv文件:内置。属性错误 属性错误: '_io.BytesIO'对象没有属性'file'



进一步解决我之前的问题,关于如何在 Python 中打开 csv 文件,我仍然没有成功这样做并且从一个错误到另一个错误。

我的Python代码如下:

@app.route("/admin", methods=["GET", "POST"])
@login_required
def admin():
"""Configure Admin Screen"""
# if user reached route via POST (as by submitting a form via POST)
if request.method == "POST":
    # load csv file with portfolio data
    csvfile = TextIOWrapper(request.files['portfolios'].file, encoding=request.encoding)
    portfolios = csv.DictReader(csvfile)
    # load csv file in dictionary
    for row in portfolios:
        print(row['first_name'], row['last_name'])
else:
    return render_template("admin.html")

我的烧瓶/html代码如下:

{% extends "layout.html" %}
`{% block title %}
    Admin
{% endblock %}
{% block main %}
<h2>Admin Console</h2>
<h3> Upload Portfolio Data</h2>
<form action="{{ url_for('admin') }}" method="post" enctype=multipart/form-
data>
 <fieldset>
    <label class="control-label">Select Portfolio Upload File</label>
    <input id="input-1" type="file" class="file" name="portfolios">
    <h3>Upload Security Lists</h2>
    <label class="control-label">Select Security Upload File</label>
    <input id="input-1" type="file" class="file" name="securities">
    <div class="form-group">
        <button class="btn btn-default" type="submit" value = "upload">Upload</button>
    </div>
</fieldset>
</form>
{% endblock %}

最初,我确实遵循了 Python 文档中的示例: 导入 CSV 使用 open('names.csv'( 作为 csvfile: 读者 = CSV。DictReader(csvfile( 对于读取器中的行: 打印(行['first_name'], 行['last_name'](

这不起作用,因为它给出了一个类型错误(请参阅我之前的帖子(

然后,我按照建议删除了"打开",这导致了另一个错误。然后我用块删除了整个,这再次导致了错误。现在,上面的代码就是我现在的代码,它生成以下错误:

内置。属性错误属性错误:"_io。BytesIO' 对象没有属性"file">

谁可以帮助我的csv导入噩梦结束?? 啪!!

io.TextIOWrapper可以

接受io.BytesIO对象。

(几乎(传递了它,除了你添加一个.file(为什么??(,它不是io.BytesIO类的字段(request.files['portfolios']已经是一个io.BytesIO对象(

只需做:

csvfile = TextIOWrapper(request.files['portfolios'], encoding=request.encoding)

最新更新