【发布时间】:2011-08-12 00:43:24
【问题描述】:
问题是:我正在读取相当大的块 (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)])
显然这是非常低效的,因为 reduce 会产生大量的字符串连接。不过我想知道,我怎样才能用 Python 实现这一点?在 C 语言中,我只需 calloc 就可以了。
如果使用 Python 无法实现,我愿意将此代码转换为 C 模块和/或完全放弃 Python 用于该项目,因为它仍处于早期阶段。
干杯!
编辑:不记得使用 * 运算符我感觉很糟糕。 :-)
这个解决方案非常适合我:
bytes += "\0" * len_diff
编辑#2:使用 ljust() 反而简化了我的代码,所以正确答案归 Jeff 提供。
【问题讨论】: