Автор оригинала: Pankaj Kumar.
Переменные среды – это набор пар-значений пар для текущей пользовательской среды. Они обычно устанавливаются операционной системой и текущими пользовательскими конфигурациями. Например, в среде Unix переменные среды устанавливаются с использованием профиля пользователя I.E.Bash_profile, .bashrc или .profile файлов.
Переменные среды в Python
Вы можете подумать о переменных средах в качестве словаря, где ключ – это имя переменной среды, и значение является значением переменной среды.
Как читать переменные среды в Python
Мы можем использовать свойство Module Python OS «Environment», чтобы получить словарь всех переменных среды. Когда модуль ОС загружается интерпретатором Python, установлено значение ELROCE. Любые дальнейшие изменения в переменных среда через внешние программы не будут отражаться в уже запущенном программе Python.
Печать всех переменных среды в Python
Os.environ
Переменная – это словарь, похожий на объект. Если мы распечатаем его, все имеющие и значения переменных среды будут напечатаны.
import os # printing environment variables print(os.environ)
Выход:
environ({'PATH': '/Users/pankaj/Documents/PyCharmProjects/PythonTutorialPro/venv/bin:/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home/bin:/Library/PostgreSQL/10/bin:/Users/pankaj/Downloads/mongodb/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/Users/pankaj/Downloads/apache-maven-3.5.3/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin', 'PS1': '(venv) ', 'MAVEN_OPTS': '-Xmx2048m -XX:MaxPermSize=128m', 'VERSIONER_PYTHON_VERSION': '2.7', 'LOGNAME': 'pankaj', 'XPC_SERVICE_NAME': 'com.jetbrains.pycharm.40096', 'PWD': '/Users/pankaj/Documents/PycharmProjects/AskPython/hello-world', 'PYCHARM_HOSTED': '1', 'PYTHONPATH': '/Users/pankaj/Documents/PycharmProjects/AskPython', 'SHELL': '/bin/zsh', 'PAGER': 'less', 'LSCOLORS': 'Gxfxcxdxbxegedabagacad', 'PYTHONIOENCODING': 'UTF-8', 'OLDPWD': '/Applications/PyCharm CE.app/Contents/bin', 'VERSIONER_PYTHON_PREFER_32_BIT': 'no', 'USER': 'pankaj', 'ZSH': '/Users/pankaj/.oh-my-zsh', 'TMPDIR': '/var/folders/1t/sx2jbcl534z88byy78_36ykr0000gn/T/', 'SSH_AUTH_SOCK': '/private/tmp/com.apple.launchd.jkodHSyv2v/Listeners', 'VIRTUAL_ENV': '/Users/pankaj/Documents/PyCharmProjects/PythonTutorialPro/venv', 'XPC_FLAGS': '0x0', 'PYTHONUNBUFFERED': '1', 'M2_HOME': '/Users/pankaj/Downloads/apache-maven-3.5.3', '__CF_USER_TEXT_ENCODING': '0x1F5:0x0:0x0', 'Apple_PubSub_Socket_Render': '/private/tmp/com.apple.launchd.wL2naXrbuW/Render', 'LESS': '-R', 'LC_CTYPE': 'UTF-8', 'HOME': '/Users/pankaj', '__PYVENV_LAUNCHER__': '/Users/pankaj/Documents/PycharmProjects/AskPython/venv/bin/python'})
Если вы хотите напечатать переменные среды лучше читабельно, вы можете распечатать их в цикле.
import os for k, v in os.environ.items(): print(f'{k}={v}')
Выход:
PATH=/Users/pankaj/Documents/PyCharmProjects/PythonTutorialPro/venv/bin:/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home/bin:/Library/PostgreSQL/10/bin:/Users/pankaj/Downloads/mongodb/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/Users/pankaj/Downloads/apache-maven-3.5.3/bin:/Library/Frameworks/Python.framework/Versions/3.7/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin PS1=(venv) MAVEN_OPTS=-Xmx2048m -XX:MaxPermSize=128m VERSIONER_PYTHON_VERSION=2.7 LOGNAME=pankaj XPC_SERVICE_NAME=com.jetbrains.pycharm.40096 PWD=/Users/pankaj/Documents/PycharmProjects/AskPython/hello-world PYCHARM_HOSTED=1 PYTHONPATH=/Users/pankaj/Documents/PycharmProjects/AskPython SHELL=/bin/zsh PAGER=less LSCOLORS=Gxfxcxdxbxegedabagacad PYTHONIOENCODING=UTF-8 OLDPWD=/Applications/PyCharm CE.app/Contents/bin VERSIONER_PYTHON_PREFER_32_BIT=no USER=pankaj ZSH=/Users/pankaj/.oh-my-zsh TMPDIR=/var/folders/1t/sx2jbcl534z88byy78_36ykr0000gn/T/ SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.jkodHSyv2v/Listeners VIRTUAL_ENV=/Users/pankaj/Documents/PyCharmProjects/PythonTutorialPro/venv XPC_FLAGS=0x0 PYTHONUNBUFFERED=1 M2_HOME=/Users/pankaj/Downloads/apache-maven-3.5.3 __CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0 Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.wL2naXrbuW/Render LESS=-R LC_CTYPE=UTF-8
Получение определенного значения переменного окружения
Поскольку OS.ENVIRON является объектом словаря, мы можем получить определенное значение переменной среды с использованием ключа.
import os home_dir =os.environ['HOME'] username = os.environ['USER'] print(f'{username} home directory is {home_dir}')
Выход : Pankaj Home Directory/пользователи/Pankaj
Тем не менее, этот способ получить переменную среды повысит keyError, если переменная среды нет.
>>> import os >>> env_var = input('Please enter the environment variable name:\n') Please enter the environment variable name: data >>> print(os.environ[env_var]) Traceback (most recent call last): File "", line 1, in File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/os.py", line 678, in __getitem__ raise KeyError(key) from None KeyError: 'data' >>>
Лучший способ получить перемезу окружающей среды – использовать функцию Get () словаря. Мы также можем указать значение по умолчанию, если переменная среды нет.
>>> import os >>> env_var = input('Please enter the environment variable name:\n') Please enter the environment variable name: data >>> print(os.environ.get(env_var)) None >>> print(os.environ.get(env_var, 'CSV')) CSV
Как проверить, существует ли перемещая среда?
Мы можем использовать оператор «В», чтобы проверить, существует ли переменная среды или нет.
import os env_var = input('Please enter the environment variable name:\n') if env_var in os.environ: print(f'{env_var} value is {os.environ[env_var]}') else: print(f'{env_var} does not exist')
Выход:
# Run 1 Please enter the environment variable name: datatype datatype does not exist # Run 2 Please enter the environment variable name: USER USER value is pankaj
Как установить переменную среды в Python
Мы можем установить значение переменной среды с помощью синтаксиса: Os.environ [env_var]
import os env_var = input('Please enter environment variable name:\n') env_var_value = input('Please enter environment variable value:\n') os.environ[env_var] = env_var_value print(f'{env_var}={os.environ[env_var]} environment variable has been set.')
Выход:
Please enter environment variable name: datatype Please enter environment variable value: CSV datatype=CSV environment variable has been set.
Если вариабельная среда уже существует, она будет перезаписана новым значением. Переменная среды будет установлена только для текущего сеанса интерпретатора Python Отказ Если вы хотите изменить, чтобы быть постоянным, вам придется редактировать файл профиля пользователя в программе Python.
Заключение
Очень легко работать с переменными среды в Python. Мы можем прочитать, добавлять и обновлять переменные среды для текущего выполнения.