Я хотел бы закодировать в base64 некоторые данные, сохранить их в файле, а затем прочитать их снова. Я хотел использовать библиотеку binascii, но, похоже, не справился с этой задачей. По сути, метод, который кодирует до 64, также не возвращает строку, а байтовый массив. Как получить фактическую строку base64?

Здесь ниже код, который показывает проблему

myArray = np.array([[1, 2, 3],[4, 5, 6]])
serializedArray = binascii.b2a_base64(myArray, newline = False)

with open("Output.txt", "w") as text_file:
    text_file.write(str(serializedArray))

with open("Output.txt", "r") as text_file:
    readFromFile = text_file.read()

print(serializedArray)
print(readFromFile)
print(len(serializedArray))
print(len(readFromFile))  
-1
user1472131 20 Дек 2019 в 18:38

1 ответ

Чтение и запись в файл с использованием bytes было бы намного проще в этом случае.

import numpy as np
import binascii

myArray = np.array([[1, 2, 3],[4, 5, 6]], dtype=np.float64)
print(myArray)
serializedArray = binascii.b2a_base64(myArray, newline = False)

with open("Output.txt", "wb") as text_file:
    text_file.write(serializedArray)

with open("Output.txt", "rb") as text_file:
    readFromFile = text_file.read()

print(type(serializedArray))
print(type(readFromFile))

print(serializedArray)
print(readFromFile)

a = binascii.a2b_base64(readFromFile)
decoded_array = np.frombuffer(a, dtype=np.float64)

print(decoded_array)
0
Raj 20 Дек 2019 в 16:20