我是Python的新手,我确实遇到了困扰我的问题。
我使用以下代码获取我的zip文件的base64字符串表示。
with open( "C:\\Users\\Mario\\Downloads\\exportTest1.zip",'rb' ) as file:
zipContents = file.read()
encodedZip = base64.encodestring(zipContents)
现在,如果我输出字符串,它将包含在b''表示中。这对我来说没有必要,我想避免它。此外,它每76个字符添加一个换行符,这是另一个问题。有没有办法获取二进制内容并代表它没有换行符和尾随和前导b''?
仅用于比较,如果我在PowerShell中执行以下操作:
$fileName = "C:\Users\Mario\Downloads\exportTest1.zip"
$fileContentBytes = [System.IO.File]::ReadAllBytes($fileName)
$fileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
我确实得到了我正在寻找的确切字符串,没有b''且没有\ n每76个字符。
答案 0 :(得分:11)
"对类似字节的对象进行编码,该对象可以包含任意二进制数据,并返回包含base64编码数据的bytes
,并在之后插入换行符(b"\n"
)每个76字节的输出,并确保有一个尾随的换行符,根据RFC 2045(MIME)。"
您想要使用
"使用Base64对类字节对象进行编码并返回编码的bytes
。"
示例:
import base64
with open("test.zip", "rb") as f:
encodedZip = base64.b64encode(f.read())
print(encodedZip.decode())
decode()
会将二进制字符串转换为文本。
答案 1 :(得分:7)
使用b64encode
进行编码而不使用换行符,然后使用.decode('ascii')
对生成的二进制字符串进行解码,以获得正常的字符串。
encodedZip = base64.b64encode(zipContents).decode('ascii')