python

【python】linuxの環境変数を取得する2つの方法【→レンタルサーバで使える!】

how to get env variable on python
プログラム学生
プログラム学生

Linuxの環境変数ってpythonで操作できますか?

できるよ。最近のLinuxには、pythonが標準でインストールされていることが多いから、pythonとしてもLinuxで動く場合の考慮はちゃんとされているんだね。
環境変数については、2つの方法があるから、それらを紹介するね。

Tommy
Tommy

pythonでlinuxの環境変数を取得する2つの方法の概要

summary of getting env variable

今回は、pythonを使って、Linuxの環境変数をプログラムで取得する方法を説明します。

環境変数とは、「Linuxシステムのアプリケーション間で使われる設定値」のことです。例えば、2つのLinuxのアプリケーションは、1つ目のアプリケーションが一度、環境変数に書き出して、2つ目のアプリケーションでその値を読むということを行ったりします。

この記事を読むことよって、Linuxの環境変数をpythonプログラム上で扱うことが可能になります。

pythonでlinuxの環境変数を取得する環境

environment of getting env variable

Linuxの環境変数を取得する前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。

【python】バージョン確認の方法【→プログラミング初心者向け】

レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。

もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。

レンタルサーバでプログラミングする方法【→レンタルサーバでできる!】

pythonでlinuxの環境変数を取得するサンプルプログラム

sample program of getting env variable

ここでは、

  • os.environを使う方法
  • commands.getoutputを使う方法

の2つのlinuxの環境変数を取得するサンプルプログラム を説明します。

Linuxの環境変数を取得する(os.environを使う)

osライブラリのインポート

まず、OS(オペレーティングシステム)に依存した機能を使うためのライブラリosをインポートします。

import os

os.environを使ったメインの処理

今回の例では次の3つのLinuxの環境変数を取得することにします。

  • 言語設定「LANG」
  • 端末の種類「TERM」
  • 実行中のシェル「SHELL」
if __name__ == '__main__':

	lang = os.environ["LANG"]
	print(lang)

	term = os.environ["TERM"]
	print(term)

	sh = os.environ["SHELL"]
	print(sh)

os.environを使った例の実行結果

下記のように、LANG、TERM、SHELLのそれぞれの環境変数の値が何であったかを確認することができています。

$ python test.py
en_US.UTF-8
xterm
/bin/bash

Linuxの環境変数を取得する(commands.getoutputを使う)

commandsライブラリのインポート

システムへコマンド文字列を渡して実行するライブラリ commands をインポートします。

import commands

commands.getoutputを使ったメインの処理

commandsライブラリのgetoutput関数によってコマンドの出力のみを返すようにします。

if __name__ == '__main__':

	print(commands.getoutput("printenv | grep LANG"))
	print(commands.getoutput("printenv | grep TERM"))
	print(commands.getoutput("printenv | grep SHELL"))

commands.getoutputを使った例の実行結果

printenvのLinuxの出力をそのまま表示しているので、環境変数の値だけではなく、変数の名前自体も見えていることが分かります。

もちろん環境変数を利用する場合は、値の方を利用するので、=(イコール)の先の文字列の値部分を使用する必要があります。

$ python test.py
LANG=en_US.UTF-8
TERM=xterm
SHELL=/bin/bash

-python
-, ,

Copyright© Tommy's blog , 2020 All Rights Reserved Powered by AFFINGER5.