如何将来自 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)))
在 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)))