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

如何在Python 3中将来自SUD的base64编码字段内容写入文件,python,encoding,base64,byte,decoding,Python,Encoding,Base64,Byte,Decoding,关于Stackoverflow上的Python3,有许多字符串到字节的转换问题,每一个都处理稍微不同的情况,由于我找不到这个具体的问题,我将在这里回答我自己的问题 Web服务的某些字段,例如那些传输文件(如PDF文档)的字段,可能会进行base64编码 这确实奏效了: with open(filepath, 'w') as file_: file_.write(my_content.decode('base64')) 现在,在Python 3上的Suds中,等价物是: from bas

关于Stackoverflow上的Python3,有许多字符串到字节的转换问题,每一个都处理稍微不同的情况,由于我找不到这个具体的问题,我将在这里回答我自己的问题

Web服务的某些字段,例如那些传输文件(如PDF文档)的字段,可能会进行base64编码

这确实奏效了:

with open(filepath, 'w') as file_:
    file_.write(my_content.decode('base64'))
现在,在Python 3上的Suds中,等价物是:

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

但这会导致一个错误:
需要一个类似字节的对象,而不是“Text”
原因是Suds返回一个自定义类型
Text
,对于
b64encode
,它的反应出乎意料地不像
str
(尽管它是子类化的)。因此,必须首先将其显式转换为
str

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

否。在我的例子中,您的回答引发了一个异常:TypeError:需要一个类似字节的对象,而不是“Text”
b64解码
返回一个
bytes
对象,可能您的代码中还有其他问题。是的,它需要一个bytes对象。你读过我的问题文本了吗?它也允许
str
对象,只要它只包含ASCII数据(这很明显,因为base64字符集是ASCII的一个狭窄子集)。最重要的是,你的错误消息表明你没有传递
str
对象,但是一个我们一无所知的
文本
类的实例。如果这不起作用,那是一个完全不同的问题,你的问题应该反映出来。在
byte
/
str
问题上有足够多的混淆,而没有在混合中加入自定义类。