python中如何获取windows环境的内容?

How to get the content of windows environment in python?

在Windows命令提示符下,我可以使用

set 

获取系统环境内容

是否可以在 python 中得到这个?

这只得到python相关路径:

In [3]: import sys

In [4]: sys.path
Out[4]:
['',
 'c:\Anaconda3\Scripts',
 'c:\Anaconda3\python34.zip',
 'c:\Anaconda3\DLLs',
 'c:\Anaconda3\lib',
 'c:\Anaconda3',
 'c:\Anaconda3\lib\site-packages',
 'c:\Anaconda3\lib\site-packages\Sphinx-1.2.3-py3.4.egg',
 'c:\Anaconda3\lib\site-packages\flake8-2.2.5-py3.4.egg',
 'c:\Anaconda3\lib\site-packages\mccabe-0.2.1-py3.4.egg',
 'c:\Anaconda3\lib\site-packages\win32',
 'c:\Anaconda3\lib\site-packages\win32\lib',
 'c:\Anaconda3\lib\site-packages\Pythonwin',
 'c:\Anaconda3\lib\site-packages\runipy-0.1.1-py3.4.egg',
 'c:\Anaconda3\lib\site-packages\setuptools-7.0-py3.4.egg',
 'c:\Anaconda3\lib\site-packages\IPython\extensions',
 'c:\Users\Nick\.ipython']

尝试:

import os
import pprint
pprint.pprint(os.environ)

os.environ 是一本模仿您正在寻找的环境的字典。在这里,为了便于阅读,我只是把它漂亮地打印出来。但是当然你可以检查所有的键,检查特定键的内容,等等——字典上可能的所有大量操作!

修改 os.environ 不会影响 "upstream" 进程,例如生成您的 Python 程序的 cmd.exe;没有直接的方法可以做到这一点。但是,它 影响 "downstream" 进程,例如您可以从此处 运行 使用 os.system.

的程序

这将从 python 调用 SET,就好像它是 shell 命令一样。输出存储在变量 out.

import subprocess
setcmd = subprocess.Popen(["set"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, error = setcmd.communicate()
print out

有关子进程的更多信息以及为什么使用 shell=True 存在安全隐患,请参见此处:https://docs.python.org/2/library/subprocess.html