LoginSignup
2
2

More than 3 years have passed since last update.

Pythonで設定ファイルなどに環境変数の内容を展開する方法

Last updated at Posted at 2021-04-16

設定ファイルやちょっとしたファイルで、一部のみ動的に変更したい場合があります。
とくに、Dockerコンテナなんかで使う場合は、環境変数で動作を変えられると便利です。
かっこいいテンプレートエンジンを使ってもいいのですが、それほどでもない場合のやり方です。
いつも忘れてしまうので、ここにメモしておきます。

設定ファイルのようなもの

次のようなファイルの${NAME}の部分を環境変数で置き換える方法を考えます。

something.conf
[Setting]
name=${NAME}

環境変数設定

次のように環境変数に入れておきます。

# export NAME=hirachan

シェルスクリプトの場合

実は、シェルスクリプトでもできます。envsubstというコマンドでできるので、紹介しておきます。入っていない場合は、gettextのパッケージを入れましょう。

# envsubst < something.conf
[Setting]
name=hirachan

おーー。置き換わりました。
いい感じです。

Pythonの場合

さて、Pythonの場合です。
Pythonには、os.path.expandvarsという便利な関数があります。
os.pathにあるのでファイルのPATHをごにょごにょするための関数のようですが、問題なく使えます。

expand.py
import os
import sys

with open("something.conf", "r") as fr:
    out = os.path.expandvars(fr.read())
    sys.stdout.write(out)

実行してみましょう。

# python3 expand.py
[Setting]
name=hirachan

おーー。すばらしいですね。

まとめ

環境変数の展開は、シェルではenvsubst、Pythonではos.path.expandvarsが便利です。

2
2
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
2
2