gpt4 book ai didi

python - 从 Python 子进程执行 shell 脚本

转载 作者:行者123 更新时间:2023-11-28 22:55:28 25 4
gpt4 key购买 nike

我需要从 python 调用 shellscript。问题是 shellscript 在完成之前会问几个问题。

我找不到使用 subprocess 的方法! (使用 pexpect 似乎有点矫枉过正,因为我只需要启动它并向它发送几个 YES)

请不要建议需要修改 shell 脚本的方法!

最佳答案

使用 subprocess 库,您可以告诉 Popen 类您想要管理进程的标准输入,如下所示:

import subprocess
shellscript = subprocess.Popen(["shellscript.sh"], stdin=subprocess.PIPE)

现在 shellscript.stdin 是一个类文件对象,您可以在其上调用 write:

shellscript.stdin.write("yes\n")
shellscript.stdin.close()
returncode = shellscript.wait() # blocks until shellscript is done

您还可以通过设置 stdout=subprocess.PIPEstderr=subprocess.PIPE 从进程中获取标准输出和标准错误,但是您不应该使用 PIPE 用于标准输入和标准输出,因为可能会导致死锁。 (参见 documentation。)如果您需要管道输入和管道输出,请使用 communicate 方法而不是类文件对象:

shellscript = subprocess.Popen(["shellscript.sh"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = shellscript.communicate("yes\n") # blocks until shellscript is done
returncode = shellscript.returncode

关于python - 从 Python 子进程执行 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16855642/

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