python - flask : send_from_directory

标签 python json csv

我正在尝试将 json 转换为 csv 并从我的 Flask 应用程序下载文件。该函数无法正常工作,即使我删除了 json 文件,我总是得到相同的 csv。为什么?

按钮:

<a href="/download/wellness" class="btn btn-primary">Download</a>

我的方法:

@app.route("/download/<file_id>") 
def get_csv(file_id):
    try:
        file_id = f"{file_id}"
        filename_jsonl = f"{file_id}.jsonl"
        filename_csv = f"{file_id}.csv"

        file_id = ''

        with open(filename_jsonl, 'r') as f:
            for line in f.read():
                file_id += line

        file_id = [json.loads(item + '\n}') for item in file_id.split('}\n')[0:-1]]

        with open(filename_csv, 'a') as f:
            writer = csv.DictWriter(f, file_id[0].keys(), delimiter=";")
            writer.writeheader()

            for profile in file_id:
                writer.writerow(profile)

        return send_from_directory(directory='', filename=filename_csv, as_attachment=True)
    except FileNotFoundError:
        abort(404)

最佳答案

您遇到的问题是第一个生成的文件已被缓存。

Official documentation表示 send_from_directory() 使用 send_file() 从给定目录发送文件。 send_file() 设置cache_timeout 选项。

您必须配置此选项才能禁用缓存,如下所示:

return send_from_directory(directory='', filename=filename_csv, as_attachment=True, cache_timeout=0)

关于python - flask : send_from_directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61816171/

相关文章:

ios - 按升序对数组进行排序并删除 objective-c 中的重复值

php - 将 csv 文件中的值插入到 MySQL 表中

python - 安装 Python 时出错

python - 如何在没有循环的情况下均匀裁剪图像

python - 使用 Python 示例对多项式朴素贝叶斯分类器进行分类

php - .txt 写入 .json 文件批处理或需要 php 文件

javascript - 使用ajax检索json数据的所有 'data'属性

python - 使用 raw_input 定义要搜索的变量列表

Python:将输出保存到 csv 文件时出错?

dataframe - 如何使用 PySpark 正确导入 CSV 文件