这是问题所在:我正在读取相当大的块(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)])
Run Code Online (Sandbox Code Playgroud)
显然这是非常低效的,因为减少会产生大量的字符串连接.我想知道,我怎样才能用Python实现这个目标?在C中,我只需要calloc并完成它.
如果使用Python无法实现,我愿意将此代码转换为C模块和/或完全放弃Python用于此项目,因为它仍处于早期阶段.
干杯!
编辑:我不记得使用*运算符感觉很糟糕.:-)
这个解决方案非常适合我:
bytes += "\0" * len_diff
Run Code Online (Sandbox Code Playgroud)
编辑#2:使用ljust()而不是简化我的代码,所以正确的答案归于Jeff.