gpt4 book ai didi

python - Flask 响应中迭代器的行为

转载 作者:行者123 更新时间:2023-11-28 18:35:55 24 4
gpt4 key购买 nike

我正在努力使用下面的函数 iter_all_rows()Here is an example展示如何将大型 csv 流式传输给您的用户。

from flask import Response

@app.route('/large.csv')
def generate_large_csv():
def generate():
for row in iter_all_rows():
yield ','.join(row) + '\n'
return Response(generate(), mimetype='text/csv')

这是我的问题

我有一个像

这样的记录列表
recs = [{'big': 200, 'small': 56, 'large': 2009}, 
{'big': 444, 'small': 34, 'large': 7777}]

我想将其作为 csv 文件提供给用户。我试图先创建 csv,然后如下所示提供它

@perf.route('/_rundata.csv')
def generate_large_csv():

recs = [{'big': 200, 'small': 56, 'large': 2009},
{'big': 444, 'small': 34, 'large': 7777}]

with open('unique-filename.csv', 'wb') as output_file:
dict_writer = csv.DictWriter(output_file, keys)
dict_writer.writeheader()
dict_writer.writerows(recs)

with open('unique-filename.csv', 'rb') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print 'row', row
def generate():
for row in reader:
print 'grow', grow
yield ','.join(row) + '\n'

return Response(generate(), mimetype='text/csv')

我想我的做法是错误的。我尝试了很多组合,其中一个错误是 ValueError: I/O operation on closed file errors before one of the grow instances prints

我的问题

如何获得在请求的整个生命周期内为数据提供服务的持久生成器?喜欢示例中的 iter_all_items() 吗?

我需要将这些记录作为 csv 文件提供给用户。这是最好的方法吗?

最佳答案

你可以尝试不关闭文件句柄(这样你就不会用上下文语法打开它)

reader = csv.DictReader(open(csvfile,"rb"))
def generate_all():
for row in reader:
yield str(row)

....也许……我不确定,因为我从未使用过这样的发电机……作为 flask 响应……

关于python - Flask 响应中迭代器的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32513300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com