gpt4 book ai didi

python - 使用Python打开shell环境,运行命令退出环境

转载 作者:太空狗 更新时间:2023-10-29 22:11:18 31 4
gpt4 key购买 nike

我正在尝试使用 python 自动化流程。如果我只是在终端中,工作流程如下所示:

user:> . /path/to/env1.sh
user:> python something.py
user:> exit
user:> . /path/to/env2.sh
user:> python something2.py
user:> exit

等几个步骤。每个 env.sh 都会生成一个新脚本,其中包含大量环境变量以及在当前目录中设置的其他内容。我很确定我需要使用子流程,但我不确定如何去做。理想情况下,工作流程应该是:打开新的 shell --> 运行一些命令 --> 退出 shell --> 根据需要重复。

编辑:似乎需要一些说明。我了解如何使用 subprocess.Popen()subprocess.call() 从调用 Python 脚本的 shell 中调用内容。这不是我需要的。当调用 env.sh 时,它会设置一大堆环境变量和一些其他相关的东西,然后将您放入 shell 中以运行命令。重要的是要注意 env.sh 不会终止,直到在运行所需命令后键入 exit。使用 subprocess.call("./env.sh", shell = True) 打开 shell 并停在那里。这就像输入命令 ./env.sh 除了当发出 exit 命令时,python 脚本的其余部分。所以:

subprocess.call(". /path/to/env.sh", shell = True)
subprocess.call("python something.py", shell = True)

没有做我需要它做的事,也没有:

p = subprocess.Popen(". /path/to/env.sh", shell = True)
subprocess.call("python something.py", shell = True)
p.kill()

最佳答案

据我了解,您想运行一个命令,然后将其他命令传递给它:

from subprocess import Popen, PIPE

p = Popen("/path/to/env.sh", stdin=PIPE) # set environment, start new shell
p.communicate("python something.py\nexit") # pass commands to the opened shell

关于python - 使用Python打开shell环境,运行命令退出环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22163422/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com