Python - Каков наиболее эффективный способ создания заполнения?

Вот проблема: я читаю двоичные файлы довольно большими блоками (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 () вместо этого немного упростило мой код, поэтому правильный ответ достается Джеффу.

7
задан João Neves 24 April 2011 в 22:38
поделиться