我正在尝试将 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/