Я использую API, который ожидает от меня передачи объекта файла для чтения, но я хочу передать только часть существующего файла, чтобы API считывал только первые n байтов. Я предполагаю, что мог бы обернуть «файл» в моем собственном классе, что-то вроде:
class FilePortion(file):
def __init__(self, name, mode, lastByteToRead):
self.LAST_BYTE = lastByteToRead
super(FilePortion, self).__init__(name, mode)
def read(self, size=None):
position = self.tell()
if position < self.LAST_BYTE:
readSize = self.LAST_BYTE - position
if size and size < readSize:
readSize = size
return super(FilePortion, self).read(readSize)
else:
return ''
... за исключением того, что я не уверен, какие другие методы нужно переопределить и как именно. Как бы я переопределил next (), например? Есть ли лучший способ сделать это?