Вот проблема: я читаю двоичные файлы довольно большими блоками (512 КиБ) и хочу дополнить последний блок нулями, если он короче, чем размер блока.
В настоящее время я делаю что-то вроде этого:
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 я бы просто позвонил и покончил с этим.
Если это невозможно с Python, я готов преобразовать этот код в модуль C и / или полностью отказаться от Python для этого проекта, поскольку он все еще находится на начальной стадии.
Ура!
РЕДАКТИРОВАТЬ : Я чувствую себя ужасно из-за того, что не забыл использовать оператор *. : -)
Это решение отлично сработало для меня:
bytes += "\0" * len_diff
РЕДАКТИРОВАТЬ # 2 : Использование ljust () вместо этого немного упростило мой код, поэтому правильный ответ достается Джеффу.