使用 Flask 在 Python 中打开 csv 文件 [英] Opening csv file in Python using Flask

查看:76
本文介绍了使用 Flask 在 Python 中打开 csv 文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,我尝试使用 Flask 在 Python 中打开一个 .csv 文件.我从 Python 库中复制了代码,但是我从一个错误消息转到另一个错误消息,我不知道我做错了什么.我在以下代码中得到的最新错误代码是:TypeError: invalid file:

任何想法我做错了什么?

我的Python代码/Flash路线如下:

@app.route("/admin", methods=["GET", "POST"])@需要登录定义管理员():"""配置管理屏幕"""# 如果用户通过 POST 到达路由(如通过 POST 提交表单)如果 request.method == "POST":# 加载包含投资组合数据的 csv 文件使用 open(request.files["portfolios"]) 作为 csvfile:投资组合 = csv.DictReader(csvfile)# 在字典中加载csv文件对于投资组合中的行:打印(行['first_name'],行['last_name'])别的:返回 render_template("admin.html")

我的 html/Flask 代码是:

{% extends "layout.html" %}{% 块标题 %}行政{% 结束块 %}{% 块主要 %}<h2>管理控制台</h2><h3>上传投资组合数据</h2><form action="{{ url_for('admin') }}" method="post" enctype=multipart/form-data><字段集><label class="control-label">选择作品集上传文件</label><input id="input-1" type="file" class="file" name="portfolios"><h3>上传安全列表</h2><label class="control-label">选择安全上传文件</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>

</fieldset></表单>{% 结束块 %}

解决方案

文件已打开.open 接受一个字符串文件名并创建一个打开的文件对象,但您不需要这样做,因为 request.files 中的对象已经是类似打开的文件对象.

portfolios = csv.DictReader(request.files['portfolios'])

So, I am trying to open an .csv file in Python using Flask. I copies the code from the Python library, but I go from one error message to the other and I don't know what I am doing wrong. The latest error code I get on the below code is: TypeError: invalid file:

Any ideas what I am doing wrong?

My Python code/Flash route is as follows:

@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
        with open(request.files["portfolios"]) as csvfile:
            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")

My html/Flask code is:

{% 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 %}

解决方案

The file is already open. open takes a string filename and created an open file object, but you don't need to do that because objects in request.files are already open file-like objects.

portfolios = csv.DictReader(request.files['portfolios'])

这篇关于使用 Flask 在 Python 中打开 csv 文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆