python中writers_如何在Python中使用BufferedWriter?

我面临着以下问题:我正在尝试实现一个供应链模拟器。这些将产生大量EPCIS事件(发生在RFID读卡器上的事件)。然后应将这些事件写入csv文件,以便将它们加载到任何数据库中并对其运行分析算法。

模拟器是用python实现的,运行良好。我现在要做的是将事件缓冲写入文件,以减少访问磁盘所需的时间。浏览python文档时,我偶然发现了io.BufferedWriter,这听起来和我正在寻找的东西一模一样。无论如何,我不能让它工作。

这是我到目前为止所做的。我实现了我的CsvWriter类,该类继承自RawIOBase并管理文件句柄。当它被实例化时,它将创建一个BufferedWriter,并将自己作为raw参数提交(这可能已经是一个问题了?)class CsvWriter(AbstractWriter):

def __init__(self, filename):

self.filename = filename

self.file = self.openFile()

self.buffer = BufferedWriter(self, settings.WRITE_THRESHOLD)

当我知道要写一些东西时,我称之为write_buffered缓冲,它看起来像:def write_buffered(self, data_dict):

self.buffer.write(b';'.join(map(str, data_dict.values())) + '\n')

实际的write方法(如我所述)需要在CsvWriter类本身上实现,如下所示:def write(self, data):

if self.file.closed:

self.file = self.openFile()

return self.file.write(data)

问题是,当我尝试运行模拟器时,会出现以下错误:IOError: raw write() returned invalid length -1 (should have been between 0 and 78)

你们中有谁能告诉我怎么解决这个问题吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值