Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 烧瓶-D3读取的温度CSV为空_Javascript_Csv_D3.js_Flask_Python 3.7 - Fatal编程技术网

Javascript 烧瓶-D3读取的温度CSV为空

Javascript 烧瓶-D3读取的温度CSV为空,javascript,csv,d3.js,flask,python-3.7,Javascript,Csv,D3.js,Flask,Python 3.7,我目前在创建一个临时CSV文件时遇到问题,该文件应该由D3.js读取。出于某种原因,它总是被视为空的 如果我将数据帧df的内容复制并粘贴到例如test.csv中,并使用d3.csv(“test.csv”),…则它运行时没有任何问题,console.log(data)返回大小为31的数组。但是,使用Flask URL,我得到一个空数组[]作为console.log的输出(数据) 奇怪的是,print(“start”,file=sys.stderr)和print(buffer,file=sys.st

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

如果我将数据帧
df
的内容复制并粘贴到例如
test.csv
中,并使用
d3.csv(“test.csv”),…
则它运行时没有任何问题,
console.log(data)
返回大小为31的数组。但是,使用Flask URL,我得到一个空数组
[]
作为
console.log的输出(数据)

奇怪的是,
print(“start”,file=sys.stderr)
print(buffer,file=sys.stderr)
从未执行过(至少它没有显示在控制台上),这让我相信,即使调用了Flask URL
/query/csv/
,整个
获取d3数据(doc id)
函数也从未运行过

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

编辑:我刚刚在浏览器网络选项卡中发现
/query/csv/{{doc\u id}
正在被调用,但由于某种原因没有出现在我的Flask调试日志中。此外,如前所述,我放在函数中的
打印文件似乎从未执行过,这使我相信D3.js代码调用了正确的Flask URL,但函数从未执行过

此外,
console.log(d3.csv('/query/csv/{doc_id}}');
返回
{header:ƒ、mimeType:ƒ、responseType:ƒ、response:ƒ、get:ƒ、}
其中大多数变量,如
header参数
行参数
都是
null

烧瓶代码

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')
...
   d3.csv("/query/csv/{{doc_id}}", function(error, data) {
        if (error) throw error;

        console.log(data);
...
浏览器网络选项卡

您可能需要在
发送文件
中指定
为\u attachment=true

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

设置
内容配置
,告知浏览器下载文件

resp = flask.make_response(df.to_csv())
resp.headers["Content-Disposition"] = "attachment; filename=export.csv"
resp.headers["Content-Type"] = "text/csv"
return resp

不幸的是,将
作为附件添加给我
GEThttp://127.0.0.1:5000/query/csv/8 500(内部服务器错误)
未捕获的XMLHttpRequest
if(错误)捕获抛出错误;
Oops我忘了添加错误的Python端,它是
TypeError:filename不可用,作为附件发送是必需的。
。不幸的是,这是相同的问题。它看起来像
d3.csv(“/query/csv/{doc\u id}…”。。。“
从不激活Flask函数,这似乎不是Flask函数本身的问题。从浏览器的“网络”选项卡上,可以看出,
/query/csv/{{doc\u id}}
正在被调用,但函数似乎没有执行(或者Flask无法识别被调用的Flask URL)。只想更新。我强制执行了代码,但得到了
GEThttp://127.0.0.1:5000/query/csv/8 500(内部服务器错误)
XMLHttpRequest{onreadystatechange:null,readyState:4,超时:0,带凭据:false,upload:XMLHttpRequestUpload,…}
两者都被
if(错误)捕获抛出错误;
。此外,使用
console.log(d3.csv('/query/csv/{{doc_id}'));
我得到了与使用缓冲区代码时相同的空输出(我用附加信息编辑了我的原始帖子),但出现了上述错误。