javascript - Flask - D3 空读取临时 CSV

标签 javascript csv d3.js flask python-3.7

我目前在创建应由 D3.js 读取的临时 CSV 文件时遇到问题。由于某种原因,它总是被视为空的。

如果我复制并粘贴 dataframe df 的内容进入例如test.csv并使用 d3.csv("test.csv", ...然后它运行没有任何问题并且console.log(data)返回一个大小为 31 的数组。但是,使用 Flask URL,我得到一个空数组 []作为 console.log(data) 的输出.

奇怪的是print("starting", file=sys.stderr)print(buffer, file=sys.stderr)从不执行(至少它没有显示在控制台上)这让我相信整个 get_d3_data(doc_id)即使 Flask URL /query/csv/<doc_id> 函数也永远不会运行被称为。

在 Flask 调试日志回溯中,GET /query/8 HTTP/1.1" 200 -这是包含 D3.js 代码的 URL 是最后一个被调用的并且 GET /query/csv/8永远不会被调用。

编辑: 我刚刚在浏览器网络选项卡中发现 /query/csv/{{doc_id}}正在被调用但由于某种原因没有出现在我的 Flask 调试日志中。另外,如前所述,prints我放入函数似乎永远不会执行,这让我相信 D3.js 代码调用了正确的 Flask URL,但函数永远不会执行。

此外,console.log(d3.csv('/query/csv/{{doc_id}}'));返回 {header: ƒ, mimeType: ƒ, responseType: ƒ, response: ƒ, get: ƒ, …}其中大多数变量,如 header argumentsrow argumentsnull .

flask 代码

from flask import Flask, json, render_template, send_file
import gensim
import gensim.models as g
import smart_open
import pandas as pd
from io import StringIO
...
@app.route('/query/csv/<doc_id>')
def get_d3_data(doc_id):
    print("starting", file=sys.stderr)
    ...    
    #code to make dataframe df
    ...
    buffer = StringIO()
    df.to_csv(buffer, encoding='utf-8')
    buffer.seek(0)
    print(buffer, file=sys.stderr)
    return send_file(buffer, mimetype='text/csv')

HTML 代码

...
   d3.csv("/query/csv/{{doc_id}}", function(error, data) {
        if (error) throw error;

        console.log(data);
...

浏览器网络标签 enter image description here

最佳答案

您可能需要在 send_file 中指定 as_attachment=true:

return send_file(buffer, mimetype='text/csv', as_attachment=True)

关于javascript - Flask - D3 空读取临时 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56027953/

相关文章:

python - 如何将文件夹中的所有 .csv 文件转换为具有多个工作表选项卡(每个 .csv 1 个)的单个 .xlsx 文件?

shell - 提取最后一行第n列的值

javascript - d3.layout.pack 圆圈内的文本覆盖其他圆圈中的其他文本

javascript - 如何使用Grails捕获图像并从网络摄像头保存?

PHP: CSV 导入到 MYSQL 总是少于 CSV 文件中的实际行数?

javascript - SVG 路径似乎没有正确定位自身

javascript - SVG:Windows 和 Linux 上的字体间距非常不同

javascript - jQuery 模态窗口出现在 IE7 和 IE8 中的元素下

javascript - 使用每个助手的 Handlebars 来加载带有 alt 标签的图像

javascript - 您最喜欢的 Mootools/Prototype native 对象原型(prototype)是什么?