Мне нужно обрабатывать ZIP-файл со специализированным содержанием и, таким образом, хотят, чтобы создать оболочку, так что я могу использовать что-то вродеСоздать файл оболочку, которая может быть открыта
with open(MySpecialFile('/path/to/file.zip', 'rb')) as msf:
<snip>
Я уже знаю, как реализовать __enter__
и __exit__
, но я не могу найти документацию о том, как я могу сделать объект открытым. Я попытался реализовать функцию __open__
в надежде, что python применит метод open() таким образом. К сожалению, это, кажется, не так:
>>> class Foo():
... def __open__(self):
... print('Opened!')
...
>>> with open(Foo()) as f:
... print('yay')
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: invalid file: <__main__.Foo object at 0x7f93b630ab00>
Что такое правильный способ создать пользовательский объект, который может быть открыт с помощью open()
?
Так я полагаю, что нет никакого способа, чтобы использовать встроенный в открытом() в моем случае обертку непосредственно? –
@RichardNeumann: Нет, это не имеет смысла. –