Cucco’s Compute Hack

コンピュータ関係の記事を書いていきます。

pythonでの環境変数操作

pythonでの環境変数の参照、設定、削除。

クラスにしたもの

1つの環境変数ごとに1つのインスタンスが必要。

import os

class myosenv():
    def __init__(self,new_key:str, value_str=None):
        self.new_key=new_key
        
        key_value=os.getenv(self.new_key)

        if key_value is not None:
            print(f"{new_key} already exists.")
            print(f"{new_key}={key_value}")
            raise Exception

        if value_str is not None:
            self.set_value(value_str)

    def set_value(self, value_str:str):
        # __init__でその名前の環境変数が存在していないことは確認済み
        os.environ[self.new_key] = value_str

    def get_value(self):
        return os.getenv(self.new_key)

    def __del__(self):
        del os.environ[self.new_key]

if __name__ == '__main__':

    #env = myosenv("os")
    env = myosenv("hoge")
    env.set_value("hoge1")

    print(env.get_value())
    print(os.environ["hoge"])
    
    # コンストラクタでkeyとvalueを両方定義
    env_piyo = myosenv("piyo","piyo20")
    print(env_piyo.get_value())
    print(os.environ["piyo"])

基本の動作確認

コード
import os

print("\n1. 実在する環境変数")#----------------------------------
new_key="OS"
key_value=os.getenv(new_key)

if key_value is None:
    print(f"存在しない。{new_key} is {key_value}")
else:
    print(f"{new_key} is {key_value}")

print("\n2. 実在しない環境変数")#----------------------------------

new_key="hoge"
key_value=os.getenv(new_key)

if key_value is None:
    print(f"存在しない。{new_key} is {key_value}")
else:
    print(f"{new_key} is {key_value}")

print("\n3. 実在しない環境変数を新たに作る")#----------------------------------
#new_key="hoge"
#key_value=os.getenv(new_key)

if key_value is None:
    print(f"存在しない。{new_key} is {key_value}")
    new_key_value="hoge2000"
    os.environ[new_key] = new_key_value
    print(f"set {new_key} = {new_key_value}")
else:
    print(f"{new_key} is {key_value}")

print("\n4. 環境変数を新たに作った")#----------------------------------
#new_key="hoge"
key_value=os.getenv(new_key)

if key_value is None:
    print(f"存在しない。{new_key} is {key_value}")
else:
    print(f"{new_key} is {key_value}")

print("\n5. 作った環境変数を消す")#----------------------------------
del os.environ[new_key]
print(f"del os.environ[{new_key}]")

print(f"\n6. 環境変数を消した後")#----------------------------------
#new_key="hoge"
key_value=os.getenv(new_key)

if key_value is None:
    print(f"存在しない。{new_key} is {key_value}")
else:
    print(f"{new_key} is {key_value}")
実行結果
1. 実在する環境変数
OS is Windows_NT

2. 実在しない環境変数
存在しない。hoge is None

3. 実在しない環境変数を新たに作る
存在しない。hoge is None
set hoge = hoge2000

4. 環境変数を新たに作った
hoge is hoge2000

5. 作った環境変数を消す
del os.environ[hoge]

6. 環境変数を消した後
存在しない。hoge is None