👌
【Azure Blob storage】-コンテナー内のドキュメントの内容をpythonを使って表示する方法
やること
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