Python - 시스템 환경 변수 가져오기 (os.environ)

Python에서 시스템의 환경 변수를 가져오는 방법을 소개합니다.

시스템 환경 변수는, 우분투를 예로 들면, 터미널에서 env 명령어 입력 시 출력되는 내용들입니다.

$ env
SHELL=/bin/bash
SESSION_MANAGER=local/js:@/tmp/.ICE-unix/1364,unix/js:/tmp/.ICE-unix/1364
QT_ACCESSIBILITY=1
COLORTERM=truecolor
...

1. os.environ : 모든 시스템 환경 변수

다음과 같이 모든 시스템 환경 변수를 출력할 수 있습니다.

import os

print(os.environ)

Output:

environ({'PATH': '/home/js/.local/bin:/opt/gradle/latest/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin', 'LC_MEASUREMENT': 'ko_KR.UTF-8', .....

다음과 같이 보기 좋게 출력할 수도 있습니다.

import os

for key, value in os.environ.items():
    print('{}: {}'.format(key, value))

Output:

PATH: /home/js/.local/bin:/opt/gradle/latest/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
LC_MEASUREMENT: ko_KR.UTF-8
XAUTHORITY: /run/user/1000/gdm/Xauthority
....

2. os.environ['key'] : 시스템 환경 변수

특정 환경 변수만 가져오려면, os.environ['key']와 같이 key를 전달하여 value를 가져올 수 있습니다.

import os

print(os.environ['HOME'])
print(os.environ['LANG'])

Output:

/home/js
en_US.UTF-8

3. os.environ.get('key') : 시스템 환경 변수

os.environ.get('key')으로 특정 key에 대한 환경 변수 값을 가져올 수 있습니다.

import os

print(os.environ.get('HOME'))
print(os.environ.get('LANG'))

Output:

/home/js
en_US.UTF-8

4. 존재하지 않는 환경 변수

다음과 같이 environ['key']으로 존재하지 않는 환경 변수를 가져오면, KeyError가 발생합니다.

import os

result = os.environ.get('NOT_EXISTS')
print(result)

Output:

/usr/bin/python3.8 /home/js/IdeaProjects/python-ex/getenv.py
/usr/lib/python3/dist-packages/requests/__init__.py:89: RequestsDependencyWarning: urllib3 (1.26.7) or chardet (3.0.4) doesn't match a supported version!
  warnings.warn("urllib3 ({}) or chardet ({}) doesn't match a supported "
Traceback (most recent call last):
  File "/home/js/IdeaProjects/python-ex/getenv.py", line 3, in <module>
    print(os.environ['NOT_EXISTS'])
  File "/usr/lib/python3.8/os.py", line 675, in __getitem__
    raise KeyError(key) from None
KeyError: 'NOT_EXISTS'

에러를 발생시키지 않는 방법

아래와 같이 environ.get('key')로 존재하지 않는 환경 변수를 가져오면, 에러는 발생하지 않고 None이 리턴됩니다.

import os

result = os.environ.get('NOT_EXISTS')
print(result)

Output:

None

5. Default value

환경 변수가 존재하지 않을 때 default value가 리턴되도록 할 수 있습니다. environ.get(key, default)처럼 default value를 설정할 수 있습니다.

import os

result = os.environ.get('NOT_EXISTS')
print(result)

result = os.environ.get('NOT_EXISTS', 'DEFAULT')
print(result)

Output:

None
DEFAULT

6. Custom 환경 변수

터미널에서 파이썬 프로그램을 실행하기 전에, 예를 들어, 리눅스에서 export 명령어로 커스텀 환경 변수를 추가할 수 있습니다. 이렇게 추가된 커스텀 변수도 파이썬에서 읽을 수 있습니다.

아래 코드는 CUSTOM_ENV라는 이름의 환경 변수를 출력하는 코드입니다.

import os

result = os.environ.get('CUSTOM_ENV')
print(result)

아래와 같이 파이썬 프로그램을 실행하기 전에 env CUSTOM_ENV=12345로 변수를 설정하고 실행하면 파이썬에서 커스텀 환경 변수를 읽을 수 있습니다.

$ export CUSTOM_ENV=12345
$ python getenv.py
12345
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha