Как создать объект файла Python, представляющий только часть файла - PullRequest
0 голосов
/ 17 февраля 2012

Я использую 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 (), например? Есть ли лучший способ сделать это?

Ответы [ 2 ]

1 голос
/ 22 июня 2012

Вы можете использовать существующий класс-оболочку tarfile._FileInFile. Не делайте велосипеды:)

1 голос
/ 17 февраля 2012

Как насчет придания ему объекта StringIO? Вы можете просто прочитать первые n байты самостоятельно и поместить их в буфер объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...