У меня проблема с передачей файлового объекта tgz-файла в Python. вот как выглядит мой код:
backup = tarfile.open(backup_file, mode='r:gz')
for f in backup.getmembers():
if f.name.endswith('.xml'):
ff = f.name
backupff = backup.extractfile(ff)
if backupff:
backupobj = backupff.read()
backup.close()
Проблема возникает из
backupobj = backupff.read()
, и он дает эту ошибку:
AttributeError: 'bytes' у объекта нет атрибута 'read'
У меня нет такой проблемы при работе с zip-файлами.
Update
@ AKX, вы правы это не тот код, который я использую. Настоящий код очень большой, и я не уверен, что у кого-то есть время его изучить.
В любом случае, когда я запускаю основную функцию, я получаю эту ошибку:
file_read = file.read
AttributeError: объект 'bytes' не имеет атрибута 'read'
Вот часть file.read:
def sendfile(self, file, offset=0, count=None):
"""Borrowed from https://github.com/python/cpython/blob/3.6/Lib/socket.py
and adapted to our needs
"""
self._check_sendfile_params(file, offset, count)
if self.request.gettimeout() == 0:
raise ValueError("non-blocking sockets are not supported")
if offset:
file.seek(offset)
blocksize = min(count, 8192) if count else 8192
total_sent = 0
# localize variable access to minimize overhead
file_read = file.read
sock_send = self.request.send