如何使用Python从环境变量中获取最后的值?

2024-10-01 02:29:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一个批处理文件,然后设置环境变量,我用Python脚本调用它, 但我看不清最后的数值。在

我需要一条Python指令或其他东西,它会给我带来最后一个值,或者刷新这些值。在

setx PCL_INC %cd%\PCL\PCL-1.6.0\include\pcl-1.6

Python

os.system("F:\\Labeleditor\\build-toolset\\scripts\\setenv_VS2008_64bit_leV4") self.gui.lineEdit_2.setText(os.environ['PCL_INC'])

我没有得到变量PCL\u INC的“PCL\PCL-1.6.0\include\PCL-1.6”

我得到了旧的价值 `在


Tags: 文件build脚本includeos指令环境变量system
1条回答
网友
1楼 · 发布于 2024-10-01 02:29:32

每次启动新进程时,Windows都会为新进程(子进程)复制启动进程(父进程)的环境表。子进程(在您的案例中是批处理文件)可以修改其环境表。并且由这个子进程启动的所有进程都会得到当前表的副本。但是不可能从子进程操作父进程的环境表。这是不可能的。在

若您的批处理文件(子进程)修改了环境变量,并且您希望它们的值出现在Python脚本(父进程)中,则在批处理文件的末尾需要

set >"%TEMP%\EnvValues.tmp"

它将所有环境变量及其值打印到临时文件目录中的文件EnvValues.tmp。然后,只要批处理文件没有修改环境变量TEMP的值,就可以从Python脚本中加载该文件并提取所需的环境值。在

如果Python脚本捕获写入stdout的批处理文件的所有输出,则可以使用set。在

最后,如果您只对一些环境变量感兴趣,您还可以在批处理文件中使用echo来输出从stdout捕获的或重定向到临时文件的值,该文件在批处理文件终止后由Python脚本读入。在

示例:

将变量的名称和值以等号作为分隔符写入文件:

^{pr2}$

只将值写入文件:

@echo off
echo %ADTF_DIR%>"%TEMP%\EnvValues.tmp"
echo %ADTF_DIR%\addons>>"%TEMP%\EnvValues.tmp"

将变量的名称和值以空格作为分隔符写入stdout

@echo off
echo ADTF_DIR %ADTF_DIR%
echo ADTF_ADDONS %ADTF_DIR%\addons

读入批处理文件输出的数据后,不要忘记用Python脚本删除临时文件。在

相关问题 更多 >