はじめに
Python を使って、Markdown 形式の Table を出力する方法を紹介します。
python-tabulate
python-tabulate
は、いくつかの形式で表を出力してくれるライブラリです。
GitHub - astanin/python-tabulate: Pretty-print tabular data in Python, a library and a command-line utility. Repository migrated from bitbucket.org/astanin/python-tabulate.
Pretty-print tabular data in Python, a library and a command-line utility. Repository migrated from bitbucket.org/astanin/python-tabulate. - GitHub - astanin/py...
様々な形式で表をフォーマットしてくれるライブラリですが、今回は Markdown 形式のみを紹介します。
インストール
pip install tabulate
Markdown 形式の Table を出力する
下記のように、ヘッダーとテーブルの内容となるリストを渡し、tablefmt="github"
とするだけで、Markdown 形式の Table を出力してくれます。
headers
: ヘッダーtable
: テーブルの内容
from tabulate import tabulate
headers = ["header1", "header2"]
table = [["value1-1", "value1-2"], ["value2-1", "value2-2"], ["value3-1", "value3-2"]]
print(tabulate(table, headers, tablefmt="github"))
| header1 | header2 |
| -------- | -------- |
| value1-1 | value1-2 |
| value2-1 | value2-2 |
| value3-1 | value3-2 |
Kubernetes のマニフェストから Table を出力する
例として、Kubernetes のマニフェストから Markdown の Table を出力してみます。
Yaml ファイルには PyYAML を使います。PyYAML については下記を参照してください。

【Python】yamlを扱う
はじめにPython で Yaml ファイルを扱える PyYAML についてざっと紹介します。PyYAMLPyYAML は、Python で YAML ファイルを扱えるライブラリです。インストールまずは、pipで PyYAML をインストー...
まずは、下記のように複数のマニフェストを用意します。
.
└── yaml
├── deployment1.yaml
├── deployment2.yaml
└── deployment3.yaml
それぞれのファイルの内容は下記の通りです。
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp1
spec:
replicas: 3
selector:
matchLabels:
app: myapp1
template:
metadata:
labels:
app: myapp1
spec:
containers:
- name: container1-myapp1
image: busybox
- name: container2-myapp1
image: busybox
- name: container3-myapp1
image: busybox
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp2
spec:
replicas: 3
selector:
matchLabels:
app: myapp2
template:
metadata:
labels:
app: myapp2
spec:
containers:
- name: container1-myapp2
image: busybox
- name: container2-myapp2
image: busybox
- name: container3-myapp2
image: busybox
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp3
spec:
replicas: 3
selector:
matchLabels:
app: myapp3
template:
metadata:
labels:
app: myapp3
spec:
containers:
- name: container1-myapp3
image: busybox
- name: container2-myapp3
image: busybox
- name: container3-myapp3
image: busybox
下記のように、各 yaml ファイルから値を取り出し、python-tabulate
を使うだけで簡単に Makrdown 形式の Table が表示できます。
import glob
import yaml
from tabulate import tabulate
headers = ["Pod name", "Container name"]
table = []
files = glob.glob("./yaml/*.yaml")
for file in files:
with open(file) as f:
yaml_obj = yaml.safe_load(f)
for container in yaml_obj["spec"]["template"]["spec"]["containers"]:
table.append([yaml_obj["metadata"]["name"], container["name"]])
print(tabulate(table, headers, tablefmt="github"))
| Pod name | Container name |
| -------- | ----------------- |
| myapp1 | container1-myapp1 |
| myapp1 | container2-myapp1 |
| myapp1 | container3-myapp1 |
| myapp2 | container1-myapp2 |
| myapp2 | container2-myapp2 |
| myapp2 | container3-myapp2 |
| myapp3 | container1-myapp3 |
| myapp3 | container2-myapp3 |
| myapp3 | container3-myapp3 |