AttributeError при использовании shutil.copyfileobj - PullRequest
0 голосов
/ 08 мая 2019

При использовании кода появляется следующее сообщение об ошибке: Код:

    with open(temp_file_path, 'wb') as output_file:
        shutil.copyfileobj(raw, output_file)

Примечание: raw - это текстовый поток типа <class 'bytes'>

Ошибка:

  shutil.copyfileobj(raw, output_file)
File "/usr/lib/python3.6/shutil.py", line 79, in copyfileobj
  buf = fsrc.read(length)
AttributeError: 'bytes' object has no attribute 'read'

Как записать raw в выходной файл?

1 Ответ

1 голос
/ 08 мая 2019

A bytes объект не является текстовым потоком.Это кусок байтов.

shutil.copyfileobj предназначен для копирования содержимого одного файла -подобного obj и т. Д. В другой файл-как объектВот почему он называется copyfileobj.Файловидные объекты - это объекты, которые поддерживают интерфейс, подобный объектам, возвращаемым open, с концепцией текущей позиции, write методом для записываемых файловоподобных объектов, read и итерацией на основе строки для читаемого файла.-подобные объекты и часто ряд других методов.

A bytes объект не является файловым объектом.Это не имеет ничего из этого.Чтобы записать байты в файл, просто вызовите метод write файла.

output_file.write(raw)
...