как будто это может быть ошибкой, поэтому я зарегистрировал ее в системе отслеживания проблем Python как 32600. Обходные пути, которые исправляют необходимые свойства из IOBase, похоже, заставляют все работать, и кажется, что они должны быть там, независимо от того, является ли объект IO буфер или фактический (временный) файл.
hon 3.6.1 я попытался обернуть временный файл tempfile.SpooledTeoraryFile в io.TextIOWrapper:
with tempfile.SpooledTemporaryFile() as tfh:
do_some_download(tfh)
tfh.seek(0)
wrapper = io.TextIOWrapper(tfh, encoding='utf-8')
yield from do_some_text_formatting(wrapper)
Линияwrapper = io.TextIOWrapper(tfh, encoding='utf-8')
дает мне ошибку:
AttributeError: 'SpooledTemporaryFile' object has no attribute 'readable'
Если я создаю простой класс, как это, я могу обойти ошибку (я получаю похожие ошибки дляwritable
а такжеseekable
):
class MySpooledTempfile(tempfile.SpooledTemporaryFile):
@property
def readable(self):
return self._file.readable
@property
def writable(self):
return self._file.writable
@property
def seekable(self):
return self._file.seekable
Есть ли веская причина, почему tempfile.SpooledTeditionalFile еще не имеет этих атрибутов?