В документации zipfile для python 3.7 говорится, что метод zipfile.ZipFile.open
возвращает объект ZipExtFile
с методом seek
:
В режиме 'r'Подобный файлу объект (ZipExtFile
) доступен только для чтения и предоставляет следующие методы: read()
, readline()
, readlines()
, seek()
, tell()
, __iter__()
, __next__()
.Эти объекты могут работать независимо от ZipFile
.
Однако, когда я пытаюсь запустить свой тестовый код:
from zipfile import ZipFile
text = b'hello world'
with ZipFile('spam.zip', 'w') as inzip:
with inzip.open('eggs.txt', 'w') as infile:
infile.write(text)
with ZipFile('spam.zip', 'r') as myzip:
with myzip.open('eggs.txt', 'r') as myfile:
print(myfile.read())
myfile.seek(0)
print(myfile.read())
Затем я получаю это сообщение об ошибке:
$ python3.7 zip_test.py
b'hello world'
Traceback (most recent call last):
File "zip_test.py", line 13, in <module>
myfile.seek(0)
File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/zipfile.py", line 1025, in seek
self._fileobj.seek(self._orig_compress_start)
File "/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/zipfile.py", line 704, in seek
if self.writing():
AttributeError: '_SharedFile' object has no attribute 'writing'
Кто-нибудь знает, что я здесь не так делаю?
Другое прочтение
Вот несколько ТАК вопросов, где люди, похоже, сталкиваются с этой проблемойХотя, возможно, со старыми интерпретаторами Python:
Обновление
Я использую версию Python 3.7.0
.