诱变剂:TypeError:需要一个类似字节的对象,而不是“str”

Posted

技术标签:

【中文标题】诱变剂:TypeError:需要一个类似字节的对象,而不是“str”【英文标题】:Mutagen: TypeError: a bytes-like object is required, not 'str' 【发布时间】:2019-12-29 10:02:49 【问题描述】:

我该怎么办?我收到这个错误。我想为 FLAC 添加一些标签。 我搜索但我没有找到任何东西。请帮帮我。

    Traceback (most recent call last):
  File "indir.py", line 50, in <module>
    audio.save()
  File "/usr/local/lib/python3.6/dist-packages/mutagen/_util.py", line 169, in wrapper
    return func(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/mutagen/_util.py", line 140, in wrapper
    return func(self, h, *args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/mutagen/flac.py", line 847, in save
    self._save(filething, self.metadata_blocks, deleteid3, padding)
  File "/usr/local/lib/python3.6/dist-packages/mutagen/flac.py", line 864, in _save
    metadata_blocks, available, content_size, padding)
  File "/usr/local/lib/python3.6/dist-packages/mutagen/flac.py", line 154, in _writeblocks
    data += cls._writeblock(block)
  File "/usr/local/lib/python3.6/dist-packages/mutagen/flac.py", line 126, in _writeblock
    datum = block.write()
  File "/usr/local/lib/python3.6/dist-packages/mutagen/flac.py", line 620, in write
    f.write(self.data)
TypeError: a bytes-like object is required, not 'str'

我的代码:

audio = FLAC("music.flac")
audio['artist'] = sarki.artist.name
audio['title'] = sarki.name
pic = Picture()
pic.type = id3.PictureType.COVER_FRONT
pic.width = 640
pic.height = 640
pic.mime = 'image/jpeg'
pic.data = "music.jpg"

audio.add_picture(pic)
audio.save()

【问题讨论】:

【参考方案1】:

我相信错误就在这里:

pic.data = "music.jpg"

您正在尝试将图片的图像数据设置为字符串。我猜您想将图像数据设置为文件music.jpg 的内容。如果是这样,请尝试将此行替换为以下两行:

with open("music.jpg", "rb") as f:
    pic.data = f.read()

下面是an example in the Mutagen API reference。

【讨论】:

以上是关于诱变剂:TypeError:需要一个类似字节的对象,而不是“str”的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:需要一个类似字节的对象,而不是'str'-python 2到3 [重复]

“TypeError:在 OAuth 2.0 回调请求期间需要一个类似字节的对象,而不是 'str'”

TypeError:需要一个类似字节的对象,而不是“str”套接字编程

Django Rest Framework TypeError需要一个类似字节的对象,而不是'str'

TypeError:需要一个类似字节的对象,而不是使用 pickle 加载时的“str”

TypeError:在尝试发送 http 请求时需要一个类似字节的对象,而不是“str”