gpt4 book ai didi

python - python 中的交互式 shell 程序包装器

转载 作者:太空狗 更新时间:2023-10-29 12:27:05 25 4
gpt4 key购买 nike

我正在尝试通过 python 运行 shell 程序。我需要运行一个命令,然后当它仍在运行并等待输入继续时,我需要获取程序接收到的输出,并将该数据作为字符串处理。然后我需要将一些数据解析到该程序中,并模拟输入按下。实现这一目标的最佳方法是什么?

最佳答案

subprocess.Popen将为此工作,但要读取然后写入然后再次读取你不能使用 communicate (因为这会导致进程结束)。

相反,您需要使用进程的输出管道(下面的 process.stdout)。这很难做到正确,因为读取进程的 stdoutblocking ,因此您需要知道何时停止尝试读取(或知道该过程将产生多少输出)。

在此示例中,子进程是一个 shell 脚本,它写入一行输出,然后回显您提供的任何内容,直到它读取 EOF。

import subprocess

COMMAND_LINE = 'echo "Hello World!" ; cat'

process = subprocess.Popen(COMMAND_LINE, shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE)

s = process.stdout.readline().strip()
print(s)
s2 = process.communicate(s)[0]
print(s2)

给予:

Hello World!
Hello World!

对于更复杂的情况,您可能会考虑查看类似 pexpect 的内容.

关于python - python 中的交互式 shell 程序包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37340568/

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