スポンサーリンク

【Streamlit】ファイルのダウンロードの実装方法

記事内に広告が含まれています。

Streamlitを使用してファイルをダウンロードできる機能を実装することは、アプリケーションの利便性を高めるために役立ちます。

Streamlitでは、download_buttonというウィジェットを使用して簡単にファイルをダウンロードできるボタンを作成できます。

テキストデータやCSV、Excel、画像ファイルなど、さまざまな種類のデータを提供するのに適しています。

実装する方法についてまとめます。

スポンサーリンク

基本的な使い方

以下のコードは、テキストファイルをダウンロードするシンプルな例です。

import streamlit as st

# ダウンロードするテキストデータ
text_data = "Hello, Streamlit! This is your downloadable file."

# ダウンロードボタン
st.download_button(
    label="Download Text File",
    data=text_data,
    file_name="example.txt",
    mime="text/plain"
)

コードの説明

  1. label
    ボタンに表示するラベルを指定します。
  2. data
    ダウンロードするデータを指定します。文字列、バイナリデータ、Pandasデータフレームなどが使用可能です。
  3. file_name
    ダウンロードするファイルの名前を指定します。
  4. mime
    ファイルのMIMEタイプを指定します。ここではtext/plainを指定しています。
スポンサーリンク

CSVファイルのダウンロード

次に、Pandasを使用して生成したCSVファイルをダウンロードする方法を紹介します。

import streamlit as st
import pandas as pd

# サンプルデータフレーム
data = {
    "Name": ["Alice", "Bob", "Charlie"],
    "Age": [25, 30, 35],
    "City": ["New York", "San Francisco", "Chicago"]
}

df = pd.DataFrame(data)

# データフレームをCSV形式に変換
csv_data = df.to_csv(index=False)

# ダウンロードボタン
st.download_button(
    label="Download CSV",
    data=csv_data,
    file_name="data.csv",
    mime="text/csv"
)

コードの説明

  • df.to_csv(index=False)でデータフレームをCSV形式の文字列に変換しています。
  • mime="text/csv"を指定することで、ブラウザがCSVファイルとして認識します。

バイナリファイルのダウンロード

画像やPDFなどのバイナリファイルもダウンロードできます。

以下は画像ファイルをダウンロードする例です。

import streamlit as st

# サンプル画像ファイルをバイナリモードで読み込む
with open("sample_image.png", "rb") as file:
    img_data = file.read()

# ダウンロードボタン
st.download_button(
    label="Download Image",
    data=img_data,
    file_name="sample_image.png",
    mime="image/png"
)

コードの説明

  • open("sample_image.png", "rb")で画像をバイナリモードで読み込みます。
  • mime="image/png"を指定することで、ファイルを画像として認識させます。

Excelファイルのダウンロード

Excelファイルをダウンロードする例を紹介します。

import streamlit as st
import pandas as pd
from io import BytesIO

# サンプルデータフレーム
data = {
    "Product": ["A", "B", "C"],
    "Sales": [100, 150, 200]
}

df = pd.DataFrame(data)

# Excelファイルを作成
output = BytesIO()
with pd.ExcelWriter(output, engine="xlsxwriter") as writer:
    df.to_excel(writer, index=False, sheet_name="Sheet1")
output.seek(0)
excel_data = output.getvalue()

# ダウンロードボタン
st.download_button(
    label="Download Excel",
    data=excel_data,
    file_name="data.xlsx",
    mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
)

コードの説明

  • BytesIOを使用してExcelファイルをメモリ上に作成します。
  • mime="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"を指定することで、ファイルをExcelとして認識します。

まとめ

Streamlitのst.download_buttonを使用すれば、さまざまな形式のファイルを簡単にダウンロードできるようになります。テキストデータからCSV、バイナリファイル、さらにはExcelファイルまで対応可能です。アプリケーションの用途に応じて、適切な形式でダウンロード機能を実装してみてください。

スポンサーリンク
PythonStreamlit
著者SNS
タイトルとURLをコピーしました