gpt4 book ai didi

python - 在python中的同一进程中执行bash命令

转载 作者:行者123 更新时间:2023-11-30 22:37:48 24 4
gpt4 key购买 nike

我需要在 python 脚本上运行大型构建脚本(bash 命令)。我收到它作为一个大字符串,每行都由\n 分隔。所以,我需要单独执行每一行。

一开始,我尝试使用subprocess.Popen()处决他们。但问题是:每一行之后,进程都会终止,所有环境变量都会丢失。

问题不在于等待一个命令完成后再执行另一个命令,我需要所有命令都在同一个 shell 上执行。

到目前为止,我找到的唯一解决方案是将所有这些命令保存为 sh 文件(例如 build.sh)并在 python 上执行。

我不想使用这种方法,因为我想对每次执行有更多的控制。

有没有办法在同一进程上一一执行这些命令?

任何其他解决方案也很好。

最佳答案

你想要的肯定有点奇怪,但使用管道是可能的。

from subprocess import PIPE, Popen

p = Popen(['bash'], stdin=PIPE, stdout=PIPE)
p.stdin.write('echo hello world\n')
print(p.stdout.readline())
# Check a return code
p.stdin.write('echo $?\n')
if p.stdout.readline().strip() ⩵ '0':
print("Command succeeded")
p.stdin.write('echo bye world\n')
# Close input and wait for bash to exit
stdout, stderr = p.communicate()
print(stdout)

关于python - 在python中的同一进程中执行bash命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43770008/

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