是否可以使用csv.writer将数据写入变量而不是文件?
我希望我能做到这样的事情:
data = ''
csv.writer(data)
# ...... (I have removed the csv processing code for brevity)
message = EmailMessage('Invoice for 2012', 'h', 'noreply@test.co.uk', ['test@test.co.uk'])
message.attach('invoice.csv', data, 'text/csv')
message.send()
Run Code Online (Sandbox Code Playgroud)
当我执行代码时,我收到以下错误:
argument 1 must have a "write" method
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 12
本csv.writer类需要一个类似文件的对象,东西用.write()的方法.一StringIO类是最好的位置:
from cStringIO import StringIO
data = StringIO()
csv.writer(data)
# write your stuff
message = EmailMessage('Invoice for 2012', 'h', 'noreply@test.co.uk', ['test@test.co.uk'])
message.attach('invoice.csv', data.getvalue(), 'text/csv')
message.send()
Run Code Online (Sandbox Code Playgroud)
我在那里使用了StringIO模块的C变体; 优点是速度,缺点是您可以将每个实例仅用作可写或可读文件.因为你所做的就是在检索书面数据之前写信给你,这很好.
您可以随时使用StringIO类似文件的对象(使用write方法)并且不想在文件系统中创建实际文件.
这种内存文件方法的一个优点是I/O比实际存储后端快得多.如果你想更快,你可以使用cStringIO.请注意,cStringIO并非始终可用,因此您可以执行类似的操作
try:
import cStringIO as StringIO
except ImportError:
import StringIO
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2237 次 |
| 最近记录: |