Python 3和base64编码的二进制文件

Mar*_*ica 7 python base64 binaries python-3.x

我是Python的新手,我确实遇到了困扰我的问题.

我使用以下代码来获取我的zip文件的base64字符串表示.

with open( "C:\\Users\\Mario\\Downloads\\exportTest1.zip",'rb' ) as file:
    zipContents = file.read()
    encodedZip = base64.encodestring(zipContents)
Run Code Online (Sandbox Code Playgroud)

现在,如果我输出字符串,它将包含在b''表示中.这对我来说没有必要,我想避免它.此外,它每76个字符添加一个换行符,这是另一个问题.有没有办法获取二进制内容并代表它没有换行符和尾随和前导b''?

仅作比较,如果我在PowerShell中执行以下操作:

$fileName = "C:\Users\Mario\Downloads\exportTest1.zip"
$fileContentBytes = [System.IO.File]::ReadAllBytes($fileName)
$fileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes) 
Run Code Online (Sandbox Code Playgroud)

我确实得到了我正在寻找的确切字符串,没有b''而且每76个字符都没有\n.

Sim*_*ten 14

base64包doc:

base64.encodestring::

"编码类似字节的对象s,它可以包含任意二进制数据,并返回bytes包含base64编码的数据,b"\n"在每76个字节的输出后插入换行符(),并确保有一个尾随换行符,符合RFC 2045 (哑剧)."

你想用

base64.b64encode::

"使用Base64对类似字节的对象进行编码并返回编码bytes."

例:

import base64

with open("test.zip", "rb") as f:
    encodedZip = base64.b64encode(f.read())
    print(encodedZip.decode())
Run Code Online (Sandbox Code Playgroud)

decode()将将二进制字符串转换为文本.


gre*_*gor 7

用于b64encode在没有换行符的情况下进行编码,然后解析生成的二进制字符串.decode('ascii')以获取正常的字符串.

encodedZip = base64.b64encode(zipContents).decode('ascii')
Run Code Online (Sandbox Code Playgroud)