产生来自NUL的项目在python中分离输入

时间:2017-08-03 10:54:36

标签: python stream nul

我在python中有一种情况,我需要循环来自NUL分离流的项目,其格式类似于find /somewhere -print0的输出

  • 流是二进制的,项目可以包含除NUL之外的所有字节
  • 无法知道整个事物是否适合可用内存(假设流可以是无限的)。
  • 无法知道单个项目的长度(假设它在下面的当前解决方案中总是可能长于READ_SIZE。)

我觉得我在这里遗漏了一些东西,比如fd.readlines(),但是\ 0而不是\ n)

这是我目前用来解决这个问题的方法:

READ_SIZE = 2**14
def readitems(fd):
    buffer = b''
    last = fd.read(READ_SIZE)
    while(last):
        x = last.split(b'\0')
        for i in range(len(x)-1):
            yield buffer + x[i]
            buffer = b''
        buffer += x[-1]
        last = fd.read(READ_SIZE)

如果我真的没有内置的方法可以做到这一点,那么欢迎所有更快速和/或更清洁的解决方案。

0 个答案:

没有答案