如何将来自 Suds 的 base64 编码字段内容写入 Python 中的文件 3

How to write a base64 encoded field content coming from Suds to a file in Python 3

在 Whosebug 上有很多关于 Python 3 的字符串到字节的转换问题,每个问题处理的情况都略有不同,由于我找不到这个具体的问题,我将在这里回答我自己的问题。

网络服务的一些字段,例如那些像 PDF 文档一样传输文件的,可能会进行 base64 编码。

它 Python 2 这确实有效:

with open(filepath, 'w') as file_:
    file_.write(my_content.decode('base64'))

现在,在 Python 3 的 Suds 中,相当于:

from base64 import b64decode
file_.write(b64decode(my_content))

但这会导致错误:a bytes-like object is required, not 'Text'

原因是 Suds returns 一个自定义类型 Text 对于 b64encode 意外地不像 str 那样反应(尽管它是它的子类)。所以必须先显式转换为str

from base64 import b64decode
file_.write(b64decode(str(my_content)))