如何使用Python获取当前用户的环境变量列表("用户变量")?
os.environ()
返回系统变量,更改这些变量需要管理员访问权限。
我想让它更改 PATH 的用户变量,因为这可以在没有任何限制的情况下完成。
错误的。 os.environ
返回当前进程的环境。在此级别,没有用户或系统变量的概念。
当然,您可以更改这些环境变量中的任何一个。对于PATH
,只需执行以下操作:
os.environ['PATH'] = new_path
但您只是在改变当前的流程环境。这意味着这个新环境将被当前进程及其所有子进程使用,但在进程结束时将消失。
没有可移植的方式来修改调用 shell 的环境
无论如何,在窗口中,您可以使用命令修改永久环境变量 setx
.例如,如果要将用户环境变量FOO
更改为bar
,则可以在python脚本中执行此操作:
import os
os.system("setx FOO bar")
但是,此更改将仅由执行命令后从 Windows 资源管理器启动的进程使用。特别是 python 脚本的环境和调用cmd.exe
的环境都不会改变,如果有的话。
是的,这是可能的
import subprocess
raw_path = subprocess.run(["powershell", "-Command","[Environment]::GetEnvironmentVariable('Path','User')"], capture_output=True)
user_path = raw_path.stdout.decode('ascii').split(';') print(user_path)