问题出在这里:我正在以相当大的块(512 KiB)读取二进制文件,并希望每块块的长度小于块大小时将最后一块填充到零。Python - 什么是生成填充最有效的方法?
目前,我正在做这样的事情:
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(),而不是简化我的代码位,所以正确答案去杰夫。
http://docs.python.org/library/mmap.html – 2011-04-24 22:24:13