web-dev-qa-db-ja.com

Python 3でファイルをbase64文字列に変換します

画像(または任意のファイル)をbase64文字列に変換する必要があります。私はさまざまな方法を使用していますが、結果は常に文字列ではなくbyteです。例:

import base64

file = open('test.png', 'rb')
file_content = file.read()

base64_one = base64.encodestring(file_content)
base64_two = base64.b64encode(file_content)

print(type(base64_one))
print(type(base64_two))

戻ってきた

<class 'bytes'>
<class 'bytes'>

バイトではなく文字列を取得するにはどうすればよいですか? Python 3.4.2。

11
Vladimir37

Base64はasciiエンコーディングなので、asciiでデコードできます

>>> import base64
>>> example = b'\x01'*10
>>> example
b'\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01'
>>> result = base64.b64encode(example).decode('ascii')
>>> print(repr(result))
'AQEBAQEBAQEBAQ=='
19
tdelaney

ファイルにbase64テキストを書き込む必要があります...

だから、文字列について心配するのをやめて、代わりにそれをしてください。

with open('output.b64', 'wb'):
  write(base64_one)