如何阅读CSV Django HTTP响应

fildred13

在一个视图中,我使用一个简单的csv编写器创建了一个完全由csv组成的Django HttpResponse对象:

response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="foobar.csv"'

writer = csv.writer(response)

    table_headers = ['Foo', 'Bar']
    writer.writerow(table_headers)

    bunch_of_rows = [['foo', 'bar'], ['foo2', 'bar2']]
    for row in bunch_of_rows:
        writer.writerow(row)

return response

在单元测试中,我想测试此csv的某些方面,因此我需要阅读它。我正在尝试这样做:

response = views.myview(args)

reader = csv.reader(response.content)

headers = next(reader)
row_count = 1 + sum(1 for row in reader)

self.assertEqual(row_count, 3) # header + 1 row for each attempt
self.assertIn('Foo', headers)

但是测试失败并显示以下内容headers = next(reader)

nose.proxy.Error: iterator should return strings, not int (did you open the file in text mode?)

我在HttpResponse源中看到response.content将字符串拆分为字节字符串,但是我不确定如何正确处理csv.reader该文件以正确读取文件。我以为我可以替换response.contentresponse(因为您写入对象本身,而不是对象的内容),但这只会导致错误稍有变化:

_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)

这似乎更接近,但显然仍然是错误的。阅读csv文档,我认为我无法正确打开文件。我如何“打开”这个类似文件的对象,以便csv.reader可以对其进行解析?

宫本

response.content提供字节。您需要将其解码为字符串:

foo = response.content.decode('utf-8')

然后使用io.StringIO将此字符串传递给csv阅读器:

import io
reader = csv.reader(io.StringIO(foo))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何阅读CSV Django HTTP响应

来自分类Dev

Django如何读取http请求并发送http响应

来自分类Dev

如何在Django的http响应上设置过期日期?

来自分类Dev

Django:如何引发Http401和Http403异常,例如Http404,RAISE EXCEPTION不响应

来自分类Dev

如何返回Http响应?

来自分类Dev

Django:如何以方便的方式向响应添加http标头?

来自分类Dev

如何将HTTP标头添加到所有Django响应中

来自分类Dev

如何将Python列表添加到Django HTTP响应

来自分类Dev

如何在 http 响应(django 服务器)中更改时区?

来自分类Dev

Django HTTP响应码500错误

来自分类Dev

Django Pandas对http的响应(下载文件)

来自分类Dev

在Django中HTTP响应后销毁文件

来自分类Dev

Django HTTP响应码500错误

来自分类Dev

骆驼:如何检查响应http响应

来自分类Dev

如何获取HTTP 404响应的响应内容

来自分类Dev

如何保存http响应的“块”?

来自分类Dev

如何对 HTTP 响应进行 groupBy?

来自分类Dev

如何获得http请求的响应

来自分类Dev

发送HTTP响应后如何记录HTTP请求/响应信息?

来自分类Dev

Golang写入http响应会中断输入阅读?

来自分类Dev

Django对于立即的HTTP响应是否有例外?

来自分类Dev

获取在 django 中不可能发生的 http 响应

来自分类Dev

python,当http响应为None时,如何获取响应代码

来自分类Dev

如何使用 HTTP 响应状态代码配置 API 响应缓存?

来自分类Dev

如何阅读MediaWiki API JSON响应

来自分类Dev

如何删除HTTP响应中的cookie?

来自分类Dev

如何从finally块访问$ http响应

来自分类Dev

如何使用Dart创建Http响应

来自分类Dev

如何使用$ http响应更新Angular模型?

Related 相关文章

热门标签

归档