👌

【Azure Blob storage】-コンテナー内のドキュメントの内容をpythonを使って表示する方法

2024/07/27に公開

やること

Azure Blob storageのコンテナーにword、PDF、Excelが入っています。
word、PDF、Excelの内容をPythonを使って表示させる方法を紹介します。

前提

-Azure Blob storageのコンテナーを作成済みであること
-Azure Blob storageのコンテナーにword、PDF、Excelが入っていること

ライブラリー

以下のコマンドを実行する

pip install azure-storage-blob python-docx PyPDF2 pandas openpyxl  

PDFを表示

main.py
from azure.storage.blob import BlobServiceClient  
from PyPDF2 import PdfReader  
from io import BytesIO  
  
# Azure Storageの接続文字列  
connect_str = "<接続文字列>"  
  
# BlobServiceClientを作成  
blob_service_client = BlobServiceClient.from_connection_string(connect_str)  
  
# コンテナー名とファイル名を指定 
container_name = "<コンテナー名>"  
blob_name = "<ファイル名>"  
  
# BlobClientを作成  
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)  
  
# Blobの内容をメモリ上に読み込む  
try:  
    blob_data = blob_client.download_blob().readall()  
    print("success")  
except Exception as e:  
    print(f"Failed to get blob data: {e}")  
    blob_data = None  
  
def read_pdf(blob_data):  
    if blob_data is None:  
        print("No blob data to read.")  
        return ""  
  
    try:  
        file_stream = BytesIO(blob_data)  
        reader = PdfReader(file_stream)  
        num_pages = len(reader.pages)  
        full_text = []  
        for page in range(num_pages):  
            full_text.append(reader.pages[page].extract_text())  
        return '\n'.join(full_text)  
    except Exception as e:  
        print(f"Failed to read PDF content: {e}")  
        return ""  
  
# 読み込んだBlobのデータをPDFファイルとして処理  
pdf_content = read_pdf(blob_data)  
print(pdf_content)

wordを表示

main.py
from azure.storage.blob import BlobServiceClient  
from docx import Document  
from io import BytesIO  
  
# Azure Storageの接続文字列  
connect_str = "<接続文字列>"  
  
# BlobServiceClientを作成  
blob_service_client = BlobServiceClient.from_connection_string(connect_str)  
  
# コンテナー名とBlob名  
container_name = "<コンテナー名>"  
blob_name = "<ファイル名>"  # 読み込みたいWordファイルの名前  
  
# BlobClientを作成  
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)  
  
# Blobの内容をメモリ上に読み込む  
try:  
    blob_data = blob_client.download_blob().readall()  
    print("success")  
except Exception as e:  
    print(f"Failed to get blob data: {e}")  
    blob_data = None  
  
def read_word(blob_data):  
    if blob_data is None:  
        print("No blob data to read.")  
        return ""  
  
    try:  
        file_stream = BytesIO(blob_data)  
        document = Document(file_stream)  
        full_text = []  
        for paragraph in document.paragraphs:  
            full_text.append(paragraph.text)  
        return '\n'.join(full_text)  
    except Exception as e:  
        print(f"Failed to read Word content: {e}")  
        return ""  
  
# 読み込んだBlobのデータをWordファイルとして処理  
word_content = read_word(blob_data)  
print(word_content)  

Excelを表示

main.py
from azure.storage.blob import BlobServiceClient  
from docx import Document  
from io import BytesIO  
  
# Azure Storageの接続文字列  
connect_str = "<接続文字列>"  
  
# BlobServiceClientを作成  
blob_service_client = BlobServiceClient.from_connection_string(connect_str) 
  
# コンテナー名とBlob名  
container_name = "<コンテナー名>"  
blob_name = "<ファイル名>"  # 読み込みたいExcelファイルの名前  
  
# BlobClientを作成  
blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_name)  
  
# Blobの内容をメモリ上に読み込む  
try:  
    blob_data = blob_client.download_blob().readall()  
    print("Blob data successfully downloaded.")  
except Exception as e:  
    print(f"Failed to download blob data: {e}")  
    blob_data = None  
  
def read_excel(blob_data):  
    if blob_data is None:  
        print("No blob data to read.")  
        return ""  
  
    try:  
        file_stream = BytesIO(blob_data)  
        workbook = load_workbook(file_stream)  
        sheet = workbook.active  
        data = []  
        for row in sheet.iter_rows(values_only=True):  
            data.append(row)  
        return data  
    except Exception as e:  
        print(f"Failed to read Excel content: {e}")  
        return []  
  
# 読み込んだBlobのデータをExcelファイルとして処理  
excel_content = read_excel(blob_data)  
  
# Excelの内容を表示  
for row in excel_content:  
    print(row)  
ヘッドウォータース

Discussion