Я пытаюсь прочитать CSV-файл (зашифрованный) из хранилища BLOB-объектов Azure, расшифровать его с помощью gnupg и прочитать в Python. Я могу получить доступ к файлу больших двоичных объектов, но когда я передаю его функции dcrypt, он выдает ошибку.
Ошибка: ожидаемый объект str, bytes или os.PathLike, а не StorageStreamDownloader
Файл BLOB-объекта имеет тип StorageStreamDownloader. Когда я конвертирую его в байты, я получаю ошибку «Встроенные нулевые байты».
Может кто-нибудь помочь мне с этим. Ниже мой код.
Код: Выделить всё
from azure.storage.blob import BlobServiceClient, BlobClient
import pandas as pd
import csv
from io import StringIO
from pyspark.sql import SparkSession
import io
connection_string = "AAAA"
container_name = "BBBB"
blob_service_client = BlobServiceClient.from_connection_string(connection_string)
container_client = blob_service_client.get_container_client(container_name)
import gnupg
gpg = gnupg.GPG()
gpg.encoding = 'utf-8'
passphrase = "12345"
secret = "112233"
def decrypt_file(filename, secret, passphrase):
gpg.encoding = 'utf-8'
with open(filename, 'rb') as f:
decrypted_data = gpg.decrypt(f, passphrase=passphrase)
if decrypted_data.ok:
print("done")
else:
print("error:", decrypted_data.status)
print("error:", decrypted_data.stderr)
return str(decrypted_data)
blob_client = container_client.get_blob_client(file)
blob_file_tinb = blob_client.download_blob()
tinb_file = decrypt_file(blob_file_tinb,secret,passphrase)
Источник: https://stackoverflow.com/questions/781 ... downloader