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

Python 正在运行脚本,其目的是使用subprocess.popen更改shell变量,python,windows,popen,Python,Windows,Popen,我有一系列脚本,通过subprocess.Popen在python中自动调用。基本上,我叫脚本A,然后叫脚本B,然后叫脚本C等等 脚本A使用命令设置一组本地shell变量,例如set SOME\u VARIABLE=Script\u A,set PATH=%Script\u A://=\;%路径% 脚本B和C需要有这样的效果。在unix中,可以使用“源脚本_A.sh”调用脚本A。该效果在当前命令窗口中持续。然而,subprocess.Popen实际上启动了一个新窗口(类似于) 显然,subpro

我有一系列脚本,通过
subprocess.Popen
在python中自动调用。基本上,我叫脚本A,然后叫脚本B,然后叫脚本C等等

脚本A使用命令设置一组本地shell变量,例如
set SOME\u VARIABLE=Script\u A
set PATH=%Script\u A://=\;%路径%

脚本B和C需要有这样的效果。在unix中,可以使用“
源脚本_A.sh
”调用脚本A。该效果在当前命令窗口中持续。然而,subprocess.Popen实际上启动了一个新窗口(类似于)

显然,
subprocess.Popen
不是我要执行此操作的命令。我该怎么做


edit我尝试分析文件(所有的“set”语句)并将它们作为字典传递给subprocess.Popen中的“env”,但是它似乎没有全部起作用。

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

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

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

call scriptA;
call scriptB;
call scriptC;

并使用
subprocess.Popen

运行这个helper批处理文件,但是这个文件经常更改,我不想每次都用它更新我的python脚本。我不是必须这样做吗?要么这样做,要么你用Python为最小的shell命令子集编写一个解释器,它允许你设置变量。没有乐趣。。。是否有subprocess.Popen的替代方案保留当前命令窗口?类似:,