我正试图通过Falcon中的GET请求发送CSV。我不知道从哪里开始。
以下是我的代码:
class LogCSV(object):
"""CSV generator.
This class responds to GET methods.
"""
def on_get(self, req, resp):
"""Generates CSV for log."""
mylist = [
'one','two','three'
]
myfile = open("testlogcsv.csv", 'w')
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
wr.writerow(mylist)
resp.status = falcon.HTTP_200
resp.content_type = 'text/csv'
resp.body = wr
我不想要勺子喂食,请让我知道我应该阅读/观看什么来帮助解决这个问题。 感谢
答案 0 :(得分:1)
您应该使用Response.stream
属性。在返回之前,必须将其设置为类文件对象(具有read()
方法的对象)。
首先,您应该将CSV写入此对象,然后将其提供给Falcon。在你的情况下:
resp.content_type = 'text/csv'
# Move the file pointer to the beginning
myfile.seek(0)
resp.stream = myfile
请记住使用seek(0)
将文件指针移动到开头,以便Falcon可以读取它。
如果您的文件是短暂的并且小到足以存储在内存中,则可以使用像BytesIO
这样的内存文件而不是普通文件。它的行为类似于普通文件,但永远不会写入文件系统。
myfile = BytesIO()
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
...
resp.content_type = 'text/csv'
# Move the file pointer to the beginning
myfile.seek(0)
resp.stream = myfile
)