Python - 最有效的生成填充方式是什么?
这是个问题:我在读取二进制文件时,一次读取比较大的块(512 KiB),但如果最后一块数据少于这个块的大小,我希望用零来填充它。
目前,我是这样做的:
bytes = f.read(self.chunksize)
if len(bytes) > 0:
len_diff = self.chunksize - len(bytes)
if len_diff > 0:
bytes += reduce(lambda x,y: x+y, ["\0" for i in range(0, len_diff)])
显然,这种做法效率很低,因为这样会产生很多字符串拼接。我在想,怎么用Python来实现这个功能?在C语言中,我只需要用calloc就可以搞定。
如果Python做不到,我也愿意把这段代码转换成C模块,或者干脆放弃Python,因为这个项目还处于早期阶段。
谢谢!
编辑:我觉得很糟糕,居然忘了用 * 操作符。:-)
这个解决方案对我来说非常有效:
bytes += "\0" * len_diff
编辑 #2:使用ljust()方法让我代码简化了一些,所以正确答案归Jeff。
5 个回答
2
试试这个。
bytes = "\0" * self.chunksize
rbytes = f.read(self.chunksize)
bytes[:len(rbytes)] = rbytes
或者
bytes = f.read(self.chunksize)
bytes += "\0" * (self.chunksize - len(bytes))
6
bytes += "\0"*len_diff
应该能帮到你
32
因为你在处理字符串,所以可以使用 ljust()
这个方法来进行填充。
readBytes = f.read(self.chunksize)
if readBytes:
readBytes = readBytes.ljust(self.chunksize, b'\0')