- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
class CSVDownload(View):
""" Prepares CSV file version to download """
#more code here
f = StringIO.StringIO()
writer = csv.writer(f, dialect='excel')
for v in visit_list:
writer.writerow([v.idfa.idfa, v.name, v.duration, v.firstSeen, v.lastSeen, v.identifier, v.closestProximity])
f.seek(0)
response = HttpResponse(f, content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename=AdvertiserData.csv'
return response
由于某种原因,在excel中打开文件时,文件只会输出列表中的最后一项,参见
这让我相信每一行都会覆盖第一行。尽管情况不应该如此。看看我在终端中执行的这些测试。
>>> f.getvalue()
'FFAC6F6C-1B2E-47C2-8110-5E619B239FB1,PPTest1,00:00:24,2014-11-11 23:20:24.730000,2014-11-11 23:20:48.750000,nkfe-cnb7s,NEAR\r\nFFAC6F6C-1B2E-47C2-8110-5E619B239FB1,moo2,00:00:24,2014-11-11 23:20:24.730000,2014-11-11 23:20:48.750000,nkfe-cnb7s,NEAR\r\n'
这将返回多个值,值之间有 \r\n
。
另外,我也尝试过
>>> print response
Content-Type: text/csv
Content-Disposition: attachment; filename=boo.csv
FFAC6F6C-1B2E-47C2-8110-5E619B239FB1,PPTest1,00:00:24,2014-11-11 23:20:24.730000,2014-11-11 23:20:48.750000,nkfe-cnb7s,NEAR
FFAC6F6C-1B2E-47C2-8110-5E619B239FB1,moo2,00:00:24,2014-11-11 23:20:24.730000,2014-11-11 23:20:48.750000,nkfe-cnb7s,NEAR
这也显示出不止一个值(value)。
我最近在这里看到了一个 SO 线程,讨论在这里添加到文件:How do you append to a file?但由于我仅在内存中创建此项目(使用 stringIO),如何才能获得相同的效果?
谢谢!
编辑更多信息:
visit_list
受到访问模型的影响:
class Visit(models.Model):
idfa = models.ForeignKey(Report)
name = models.CharField(max_length=255)
lastSeen = models.CharField(max_length=255)
duration = models.CharField(max_length=255)
firstSeen = models.CharField(max_length=255)
identifier = models.CharField(max_length=255)
closestProximity = models.CharField(max_length=255)
def __unicode__(self):
return self.name
class Meta:
verbose_name = "Visit"
verbose_name_plural = "Visits"
在这种特殊情况下,visit_list 返回:
>>> visit_list
[<Visit: PPTest1>, <Visit: moo2>]
最佳答案
底线:我怀疑您需要将 f.getvalue()
传递给 HttpResponse
而不是 f
.
解释:
HttpResponse
prefers strings ,尽管它也可以被视为文件对象或接受迭代器。不过,f
是一个 StringIO.StringIO
实例,而不是字符串本身。
考虑以下设置:
import StringIO
import csv
>>> f = StringIO.StringIO()
>>> writer = csv.writer(f, dialect='excel')
>>> row = range(4) # first row is [0, 1, 2, 3]
>>> for i in range(5):
writer.writerow([row]) # write more rows
row = [x + 1 for x in row]
>>> f.seek(0)
现在将 f
与 f.getvalue()
的结果进行比较:
# an instance
>>> f
<StringIO.StringIO instance at 0x03656990>
# a string
>>> f.getvalue()
'"[0, 1, 2, 3]"\r\n"[1, 2, 3, 4]"\r\n"[2, 3, 4, 5]"\r\n"[3, 4, 5, 6]"\r\n"[4, 5, 6, 7]"\r\n'
现在请注意将实例与字符串传递给 HttpResponse
时 response
对象的区别:
# The instance
>>> response = HttpResponse(f, content_type='text/csv') # f is an instance
>>> response['Content-Disposition'] = 'attachment; filename=AdvertiserData.csv'
>>> response._container
['']
# The string
>>> response = HttpResponse(f.getvalue(), content_type='text/csv') # f.getvalue() returns a string
>>> response['Content-Disposition'] = 'attachment; filename=AdvertiserData.csv'
>>> response._container
['"[0, 1, 2, 3]"\r\n"[1, 2, 3, 4]"\r\n"[2, 3, 4, 5]"\r\n"[3, 4, 5, 6]"\r\n"[4, 5 , 6, 7]"\r\n']
请注意,当您将实例传递给 HttpResponse
时,响应的 _container
属性为空,但当您传递 f 时,响应的 not 属性为空.getvalue()
字符串到 HttpResponse
。
我会尝试这个,然后:
>>> response = HttpResponse(f.getvalue(), content_type='text/csv')
>>> # etc.
关于python - Django/Python : CSV for-in loop overriding first row each time through,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27139500/
首先我要说的是,我主要是一名 iOS 开发人员,最近才开始探索全栈开发的惊心动魄的冒险。我是 PHP 和 MySQL 的新手。话虽如此,我有一个问题,我希望需要一个直接的解决方案。 我正在为一个拥有预
我的表单上有 GridEx 对象并且... 我想用 for...next 循环在其中添加一些项目。实际上我找不到任何方法来添加带有自定义数据的新行。 我想在那个 GridEx 对象中选择一个特定的行。
我有以下数据框 df1 = DataFrame([['OBJ1', 10, 'BX', 'pool1', 'OBJ2'],['OBJ2', 0, '', '', 'OBJ1'],['OBJ3', 1
所以我有以下成员(member)历史表 User_ID | Start date | End Date | Type(0-7) | ---------------------------
我不擅长sql。我查看了 stackoverflow,但似乎对我没有任何用处。所以,我正在寻求帮助。是否可以根据行中的第一个字段将 2 行合并为 1 行。 我在 mysql 中执行此操作。我将展示示例
我了解 flex sm、md、lg 列的概念,但不了解应用于行的概念。弹性行有什么作用? sm、md、lg 尺寸应用于弹性行时意味着什么? 最佳答案 简答 - .row只是网格的容器 col .然而,
我遇到麻烦的地方 我相信我需要使用 COUNT;但是,我不知道如何将一行与同一列中的每一行进行比较,然后计算有多少行比相应行少/便宜。提前谢谢您! 这是我试图解决的官方问题: “使用示例架构,编写一条
我有以下 3 个相关表 Schools Departments Classes --------------- ------------------ --
我有代码: g, g_err = data[:, 4:6].T 我不知道[:, 4:6]的含义 尤其是第一个: .T 表示转置吗? 最佳答案 您有一个名为 data 的二维矩阵,您的代码从第一维获取所
我在行单击上附加了一个事件,在行内的复选框更改上附加了一个事件。 如何防止首先触发行单击? $(document).on('click', 'table tr', function() { con
我有一个场景,我需要连接两个 SQL 表并且正在为如何做而苦恼。假设在表 A 中我有这个: ColA ColB ColC ColD 45 55 17 45 45
我用谷歌表格记录我们俱乐部的出席率。该表格链接到另一个谷歌表格,因此可以自动创建一个名字列表,并按字母顺序排序。在这张表格中,我还根据我们所做的活动,在人的名字旁边手动输入点数。。问题是,由于姓名列表
这个问题在这里已经有了答案: What is a NullPointerException, and how do I fix it? (12 个回答) 5年前关闭。 编辑:我正在使用此代码读取 Ex
我是 R 的初学者。我希望你能帮助我解决我的问题。我的数据集中的文件名包含大量信息。我必须提取这些信息来创建单独的变量。 首先我使用 splits <- t(as.data.frame(strspli
假设我有一个 CSR 格式的矩阵,将一行(或多行)设置为零的最有效方法是什么? 下面的代码运行得很慢: A = A.tolil() A[indices, :] = 0 A = A.tocsr() 我不
我遇到了一个相当复杂的问题。我有一个包含三行的数据框:id、info 和 rownum。数据如下所示: id info row 1 a 1 1 b 2
我正在阅读learnjsdata.com并遇到了这种不熟悉的 JavaScript 语法。语法如下: lookupIndex[row[lookupKey]] = row; 有人知道这里发生了什么吗?我
我有一个表格,收集每周足球比赛的结果。 根据每场比赛的结果,我根据 ID 为玩家输入 3、1 或 0 分,具体取决于他们是赢、平还是输。 id Name A1 B1 C1 A2 B2
我有一个 mysql 表: 在表1中,我有3列:Bidang、Keahlian、Nilai。在 saran 列的表结果中,我想根据 bidang 组合 keahlian,但如果 nilai > 0,则
我有一个看起来像这样的表 | ID | item1 | item 2 | | 1 | A1 | B1 | | 2 | A2 |
我是一名优秀的程序员,十分优秀!