在Python子进程中运行连续的Shell命令

问题描述 投票:0回答:1

这些是我要运行的一些相关命令。我的期望是它将当前文件夹更改为abc和列表文件。

同样在设置z=88之后,它也会打印z

import subprocess
cmd_list = []
cmd_list.append("cd ./abc")
cmd_list.append("ls")
cmd_list.append("export z=88")
cmd_list.append("echo $z")

my_env = os.environ.copy()
for cmd in cmd_list:
    sp = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=my_env, shell=True,text=True)

但是无法获得lsecho $z的任何输出>

这些是我要运行的一些相关命令。我的期望是它将当前文件夹更改为abc和列表文件。同样在设置z = 88之后,它将打印z。导入子进程cmd_list = ...

python subprocess environment-variables
1个回答
0
投票

您无法通过多次调用subprocess.Popen()来执行此操作。每个调用都会创建一个新的子进程,并且它们对环境所做的更改不会传播回Python进程。

© www.soinside.com 2019 - 2024. All rights reserved.