【Streamlit】st.codeの便利な使い方

スポンサーリンク

Pythonでのデータサイエンス分野で人気のStreamlit

htmlやJavaScriptの知識がなくても、簡単にWEBページが作れるので、チーム内で共有するようなWEBシステムを簡単に作れて非常に便利です。

今回は正直あまり使いどころが分からなかった、st.codeについて解説したいと思います。


st.codeは構文を強調(シンタックスハイライト)表示する構文でソースコードをWeb上に表示させるときに便利です。私の場合は以下の場面でst.codeを書いていて非常に便利だと感じました。

  • Pythonのちょっとしたソースコードを掲載する。
  • 出力先などのパス情報を出力する。
  • 実行したSQL文を可視化する。

st.codeの基本形

st.codeの基本構文は以下の通りです。

(構文)
st.code(body、language = "python")
パラメータ説明
body(str)コードとして表示させたい文字列
language(str)表示させたい文字列の言語

Pythonのちょっとしたソースコードを掲載する

Streamlitの公式ページにも紹介されている本来の使い方です。


Streamlitの実行方法やimport方法などが分からない場合は、以下の記事を参考にしていただければと思います。

import streamlit as st

code = '''def hello():
     print("Hello, Streamlit!")'''
st.code(code, language='python')

上記ソースコードを記述してターミナルでstreamlit run main.pyを実行します。

streamlit run main.py

Python言語用にシンタックスハイライト表示されたコードが表示されます。
また右には1クリックでソースコードをコピーするボタンも設置されます。

自分が作成したソースコードを共有したい時などに便利ですね!

出力先などのパス情報を出力する

私は、streamlitの実行環境をローカルではなく、分析元のデータベースやシステムが動いているサーバ上で動かしています。
※この方がpythonでデータ分析などの処理を実行したときに、同じサーバ内のデータベースをもとに処理が流れるので、処理自体が早い。

その際に、サーバで実行した分析処理の結果をサーバーの所定の共有フォルダにExcel出力などすることがよくあります。こんなときにサーバーの出力先をst.codeで表示させると簡単にパスをコピーして出力先までたどり着けるのですごく便利です。

import streamlit as st
import os 
#出力先のフルパス
outputpath = r'\\localhost\output\output.xlsx'
st.write('出力先フォルダ')
st.code(os.path.dirname(outputpath))
st.write('ファイル名')
st.code(os.path.basename(outputpath))

フォルダ情報はosライブラリでos.path.dirname(outputpath)で取得できます。
ファイル名だけ取得したい場合はos.path.basename(outputpath)で取得できます。

実行したSQL文を可視化

Pythonのプログラム内で実行したSQL文を出力したり表示させたいときもst.codeを使うと、簡単に可視化することができます。

import streamlit as st
import pandas as pd
import pyodbc as pdb
#DBへ接続
con = "DRIVER={SQL Server};SERVER=" + instance + ";uid=" + user + ";pwd=" + pasword + ";DATABASE=" + db
pdb.connect(con)
#SQL文
sql = '''
SELECT * FROM USERS WHERE NO = 1
'''
#pandasでSQLを実行
df = pd.read_sql(sql,con)
#sqlを可視化
st.code(sql,'sql')

このときにst.codeの第2引数の言語を‘sql’にする必要があります。

Pythonの処理内で実行したSQLをst.codeで簡単に可視化することができます。

まとめ

意外と使えるst.codeをまとめると

  • st.codeで、シンタックスハイライト表示ができる
  • 出力先パスを表示したい時などにst.codeを使うと便利
  • st.codeの第2引数の言語を’sql’にするとSQLのシンタックスハイライト表示ができる。

コメント

タイトルとURLをコピーしました