python

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

1月 29, 2020

how to get env variable on python
プログラム学生
Linuxの環境変数ってpythonで操作できますか?
できるよ。最近のLinuxには、pythonが標準でインストールされていることが多いから、pythonとしてもLinuxで動く場合の考慮はちゃんとされているんだね。<br>環境変数については、2つの方法があるから、それらを紹介するね。
Tommy

この記事で分かること

  • Linuxの環境変数が何か分かる
  • pythonプログラムからLinuxの環境変数を取得する方法が分かる

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の環境変数を取得する前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。

オススメ
how to check version in python
【python】バージョン確認の方法【→プログラミング初心者向け】

続きを見る

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

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

オススメ
how to programming on rental server
レンタルサーバでプログラミングする方法【→ブログのサーバでできる!】

続きを見る

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

sample program of getting env variable

ここでは、

  1. os.environを使う方法
  2. commands.getoutputを使う方法

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

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

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

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

import os

「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)

  1. 「os」ライブラリの「os.environ」で環境変数「LANG」の値を変数「lang」に格納する
  2. 変数「lang」の内容を表示する
  3. 「os」ライブラリの「os.environ」で環境変数「TERM」の値を変数「term」に格納する
  4. 変数「term」の内容を表示する
  5. 「os」ライブラリの「os.environ」で環境変数「SHELL」の値を変数「sh」に格納する
  6. 変数「sh」の内容を表示する

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

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

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

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

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

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

import commands

「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"))

  1. 「commands」ライブラリの「getoutput」関数で文字列「LANG」を含む行だけ表示する
  2. 「commands」ライブラリの「getoutput」関数で文字列「TERM」を含む行だけ表示する
  3. 「commands」ライブラリの「getoutput」関数で文字列「SHELL」を含む行だけ表示する

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

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

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

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

-python
-,

© 2021 Tommy's blog Powered by AFFINGER5