我编写了一个脚本,用于检查路径中的目录并删除无法访问的目录。我还使用片段以管理员身份运行我的脚本。但是当我在脚本执行后检查我的路径时 - 它都是一样的。
import os
import sys
import win32com.shell.shell as shell
if __name__ == "__main__":
if os.name != 'nt':
raise RuntimeError("This script is implemented only for Windows")
ASADMIN = 'asadmin'
if sys.argv[-1] != ASADMIN:
script = os.path.abspath(sys.argv[0])
params = ' '.join([script] + sys.argv[1:] + [ASADMIN])
shell.ShellExecuteEx(lpVerb='runas', lpFile=sys.executable, lpParameters=params)
print("I am root now")
paths = os.environ.get('Path').split(';')
accessible_paths = []
for path in paths:
if os.access(path, os.R_OK):
accessible_paths.append(path)
new_path = ';'.join(accessible_paths)
os.environ['Path'] = new_path
print(new_path)
print(new_path == os.environ['Path'])
那么我怎样才能通过Python脚本实际更改环境变量?
答案 0 :(得分:0)
根据documentation,按照您的方式设置环境变量调用os.putenv()
,但此功能的描述不清楚。事实上,据说如下:
这种对环境的更改会影响从os.system(),popen()或fork()和execv()开始的子进程。
所以我不确定os.environ
是否符合你的期望。 the following question在某种程度上证实了这一点,其中答案仅表示此更改会影响子进程......