运行脚本,其目的是使用subprocess.popen更改shell变量

时间:2011-08-22 18:56:49

标签: python windows popen

我有一系列脚本我正在使用subprocess.Popen自动调用python。基本上,我调用脚本A,然后调用脚本B,然后调用脚本C,依此类推。

脚本A使用set SOME_VARIABLE=SCRIPT_Aset PATH=%SCRIPT_A:/=\;%PATH%等命令设置一堆本地shell变量。

脚本B和C然后需要具有这种效果。在unix中,您可以使用“source script_a.sh”调用脚本A.效果在当前命令窗口中持续。但是,subprocess.Popen有效地启动了一个新窗口(种类)。

显然subprocess.Popen不是我想要这样做的命令。我该怎么做?

编辑我尝试解析文件(这是所有'set'语句)并将它们作为字典传递给subprocess.Popen中的'env',但它似乎没有全部工作..

3 个答案:

答案 0 :(得分:0)

您可以使用包含变量的python字典向Popen使用env参数,然后您不需要运行仅设置变量的命令。

答案 1 :(得分:0)

如果'脚本A'由另一个进程生成,您将需要更改另一个进程,因此输出文件的格式可以将您的源代码(import)导入到python脚本中。或者在python中编写一个解析器,它可以消除“脚本A”中的变量,并在python脚本中设置它们。

答案 2 :(得分:0)

如果您只想使用Python调用一系列批处理文件,您可以创建一个帮助程序批处理文件,该文件将调用所有这些批处理文件

call scriptA;
call scriptB;
call scriptC;

使用subprocess.Popen

运行此帮助程序批处理文件