phi*_*ese 6 python buffer file 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)
Run Code Online (Sandbox Code Playgroud)
当我知道想要写一些我称之为write_buffered缓冲的东西时,看起来像这样:
def write_buffered(self, data_dict):
self.buffer.write(b';'.join(map(str, data_dict.values())) + '\n')
Run Code Online (Sandbox Code Playgroud)
write(正如我所说)需要在CsvWriter类本身上实现的实际方法如下所示:
def write(self, data):
if self.file.closed:
self.file = self.openFile()
return self.file.write(data)
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试运行模拟器时,我收到以下错误:
IOError: raw write() returned invalid length -1 (should have been between 0 and 78)
Run Code Online (Sandbox Code Playgroud)
你们中的任何人都知道如何解决这个问题吗?