環境変数を取得するには?
業務プログラムを作成しているとクライアントPCの環境変数を取得して処理したい場合があります。
APIキーの読み込み: クライアントPCに設定されたAPIキーの環境変数を読み込みしてサービスを利用する。例えばiniファイルで管理したくない場合に利用されます。
コマンドのグローバルアクセス: PATH環境変数に含まれるディレクトリ内の実行可能ファイルは、システムのどこからでもコマンド名のみで実行できるようになります。
ワークフォルダの取得: TEMPなどの環境変数を使用して、一時的にファイルを置いて処理したい場合のフォルダを取得したい場合に利用されます。
上記のような例で利用機会があると思います。本記事では環境変数を取得するget_env関数と環境変数に新たに値を設定するset_env関数を紹介いたします。
get_env、set_envのサンプルコード
サンプルコードを紹介します。
import os
def get_env(name):
"""
指定された名前の環境変数の値を取得する。
Args:
name (str): 取得したい環境変数の名前
Returns:
str: 環境変数の値。指定された名前の環境変数が存在しない場合はNoneを返す。
"""
return os.getenv(name)
def set_env(name, value):
"""
環境変数に値を設定する。
Args:
name (str): 設定したい環境変数の名前
value (str): 環境変数に設定したい値
注意: この変更は現在のプロセスにのみ適用され、システム全体や他のプロセスには影響を与えない。
"""
os.environ[name] = value
##############################################################
# 関数のテスト
if __name__ == "__main__":
# 環境変数'PATH'の値を取得
my_var_value = get_env('PATH')
print(f'現在の値: {my_var_value}')
print('')
# 環境変数'PATH'に値'C:\\testfile'を設定
set_env('PATH', 'C:\\testfile')
# 変更後の値を確認
print(f'設定後の値{get_env("PATH")}')
print('')
# 環境変数'PATH'に値'C:\\testfile'を追加
set_env('PATH', my_var_value + 'C:\\testfile')
# 変更後の値を確認
print(f'追加後の値{get_env("PATH")}')
print('')
# 環境変数'APIKEY'に値'APIKEY'を設定
set_env('APIKEY', 'apikeyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzapikey')
# 変更後の値を確認
print(f'設定後の値{get_env("APIKEY")}')
PATH環境変数を例に処理をしています。
実行結果
筆者の環境変数は以下のようになっています。
今回はPATH環境変数を取得していますので、ユーザー環境変数とシステム環境変数が取得できます。
実行をすると現在のPATH変数に設定している値と設定後の値、PATH変数に追加した後の値が取得できます。
現在の値: C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Microsoft VS Code\bin;C:\Users\wkusr\AppData\Local\Programs\Python\Python311\Scripts\;C:\Users\wkusr\AppData\Local\Programs\Python\Python311\;C:\Users\wkusr\AppData\Local\Microsoft\WindowsApps;
設定後の値C:\testfile
追加後の値C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Microsoft VS Code\bin;C:\Users\wkusr\AppData\Local\Programs\Python\Python311\Scripts\;C:\Users\wkusr\AppData\Local\Programs\Python\Python311\;C:\Users\wkusr\AppData\Local\Microsoft\WindowsApps;C:\testfile
設定後の値apikeyzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzapikey
すでに設定されている環境変数の後ろに追加したい場合には以下のように記載して「;」をつけて文字列をつないでください。
# 環境変数'PATH'に値'C:\\testfile'を追加
set_env('PATH', my_var_value + ';C:\\testfile')
注意事項が1点あります。
set_env関数は実行しても現在のプロセスにのみ適用されシステム全体や他のプロセスには影響を与えません。したがってプログラム上から環境変数を設定しても永続的に反映しないという考え方となります。ソース例ではAPIKEY環境変数を新たに追加していますが、それは反映されないこととなります。
そのため、利用用途としては環境変数を事前設定してそれをset_env関数で取得するというやりかたとなると思います。
最後に
以上がPythonで環境変数を取得、新たに値を設定する方法です。
プログラム処理上必要な場合に活用してみてはいかがでしょうか。
また、iniファイルから取得する方法も記事にしていますので是非参照ください。
コメント