1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

業務でtomlを使ったので復習。

TOMLとは

TOML (Tom's Obvious, Minimal Language)

設定ファイルなどに適したシンプルなフォーマット。
人間が読み書きしやすく、かつ簡単にパースできます。

TOMLの公式サイトはこちら

toml関連のライブラリはいくつかありますが、今回はこちらを使いました。

インストール

pip install toml

TOMLファイルの読み込み (load)

toml.load() 関数でTOMLファイルを読み込めます。
引数にはファイルパスまたはファイルオブジェクトを指定。
読み込んだデータはPythonの辞書型に変換されます。

import toml

# tomlファイルの場所
toml_path = "toml_data/config.toml"

# ファイルパスを指定
toml_data = toml.load(toml_path)

# # ファイルオブジェクトを指定することも可能
# with open(toml_path, "r") as f:
#     toml_data = toml.load(f)

print(toml_data)

config.toml

[servers]

[servers.alpha]
ip = "10.0.0.1"
role = "frontend"

[servers.beta]
ip = "10.0.0.2"
role = "backend"

出力例

{'servers': {'alpha': {'ip': '10.0.0.1', 'role': 'frontend'}, 'beta': {'ip': '10.0.0.2', 'role': 'backend'}}}

上記のconfig.tomlをJSONで表現すると、以下のようになります。

{
	"servers": {
		"alpha": {
			"ip": "10.0.0.1",
			"role": "frontend"
		},
		"beta": {
			"ip": "10.0.0.2",
			"role": "backend"
		}
	}
}

TOMLファイルへの書き込み (dump)

toml.dump() 関数を使って、Pythonの辞書型データをTOMLファイルに書き込めます。
第一引数に書き込むデータ、第二引数にファイルパスまたはファイルオブジェクトを指定します。

import toml

toml_path = "./toml_data/toml_dump.toml"

toml_string = """
# This is a TOML document.
name = "Example"
version = "1.0"
port = 3000
"""

# ファイルパスを指定

parsed_toml = toml.loads(toml_string)

# ファイルオブジェクトを指定
with open(toml_path, "w") as f:
    toml.dump(parsed_toml, f)

出力結果

toml_dump.toml
name = "Example"
version = "1.0"

値の取得 (get)

toml.load() で読み込んだ辞書データから値を取得するには、以下の方法があります。

  • キーを使う方法
  • get()を使う方法

存在しないキーを指定した場合、KeyError が発生します。これを防ぐには、get() メソッドを使用します。get() メソッドは、キーが存在しない場合にデフォルト値を返すことができます。

import toml

# tomlファイルの場所
toml_path = "toml_data/toml_dump.toml"

# ファイルパスを指定
toml_data = toml.load(toml_path)

# ----- get() を使う場合 -----
# tomlからportの値を取得
port = toml_data.get("port", 8080)

print(port)  # 出力結果:3000

# tomlからportの値を取得(存在しない要素名)
port = toml_data.get("port_num", 8080)

print(port)  # 出力結果:8080

# ----- キーを使う場合 -----
# tomlからキーでportの値を取得
port_by_key = toml_data["port"]

print(port_by_key)  # 出力結果:3000

# tomlからキーでportの値を取得(存在しないキー)
port_by_key = toml_data["port_num"]

print(port_by_key)  # KeyError: 'port_num'

まとめ

今回は、Pythonで簡単にTOMLファイルを扱う方法を紹介しました。
文法については、改めてご紹介します。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?