在这篇文章中,我们将告诉你如何在Python中访问环境变量。
import os
print(os.environ['HOME'])
print(os.getenv('HOME'))
P.S 用Python 3.9.5测试
1.获取环境变量
1.1 下面的代码使用 [os.environ(docs.python.org/3/library/o…) 来打印环境变量HOME 。
import os
print(os.environ['HOME']) # /Users/mkyong
1.2 如果请求的键不存在,则会引发KeyError(key) 。
import os
print(os.environ['HOME_NOT_EXISTS'])
输出
终端
raise KeyError(key) from None
KeyError: 'PATH_NOT_EXISTS'
1.3 另外,我们可以使用try 来处理不存在的键。
import os, sys
try:
# If the requested key does not exist, it raises `KeyError(key)`.
os.environ['PYTHON_HOME']
except KeyError:
print('Please define the environment variable PYTHON_HOME')
sys.exit(1)
如果PYTHON_HOME 环境变量不存在,它将打印下面的输出。
终端
Please define the environment variable PYTHON_HOME
2.os.environ[]、os.getenv()和os.environ.get()之间的区别
2.1 下面的代码显示了三种不同的打印环境变量的方式HOME :
import os
print(os.environ['HOME']) # /user/mkyong
print(os.environ.get('HOME')) # /user/mkyong
print(os.getenv('HOME')) # /user/mkyong
2.2 下面三种方法的主要区别。
os.environ[]- 如果键不存在,引发异常 ,没有默认值。KeyErroros.environ.get()- 如果键不存在,则返回None或默认值。os.getenv()- 如果键不存在,则返回 或默认值。这个函数是对 的包装或速记。Noneos.environ.get()
import os
print(os.environ('HOME_KEY_NOT_EXISTS')) # raise KeyError
print(os.environ.get('HOME_KEY_NOT_EXISTS')) # `None`
print(os.environ.get('HOME_KEY_NOT_EXISTS', '/home/work/python')) # /home/work/python
print(os.getenv('HOME_KEY_NOT_EXISTS')) # `None`
print(os.getenv('HOME_KEY_NOT_EXISTS','/home/work/python')) # /home/work/python
2.3 查看os.getenv() 的源代码,它是对environ.get 函数的封装,os.getenv() 和os.environ.get() 是一样的。
os.py
def getenv(key, default=None):
"""Get an environment variable, return None if it doesn't exist.
The optional second argument can specify an alternate default.
key, default and the result are str."""
return environ.get(key, default)
3.打印所有环境变量
3.1 下面的代码打印当前系统中所有的环境变量。
import os
#print everything
for key, value in os.environ.items():
print('{}: {}'.format(key, value))
输出
终端
USER: mkyong
__CFBundleIdentifier: com.microsoft.VSCode
COMMAND_MODE: unix2003
SHELL: /bin/zsh
HOME: /Users/mkyong
TERM: xterm-256color
_: /usr/local/bin/python3
#...
3.2 下面的代码按字母顺序打印所有环境变量。
import os
#print everything in sorted alphabetical order.
for key, value in sorted(os.environ.items()):
print('{}: {}'.format(key, value))
输出
终端
COLORTERM: truecolor
COMMAND_MODE: unix2003
HOME: /Users/mkyong
LANG: en_GB.UTF-8
SHELL: /bin/zsh
SHLVL: 1
_: /usr/local/bin/python3
__CFBundleIdentifier: com.microsoft.VSCode
#...
4.下载源代码
$ git clonegithub.com/mkyong/pyth…
$ cd os