如果我使用 Python 的
"foo"
,如何将字符串 subprocess.run()
传递给在标准输入上期望它的程序?
通过
input="whatever string you want"
和 text=True
到 subprocess.run
:
import subprocess
subprocess.run("cat", input="foo\n", text=True)
subprocess.run
的文档:
,从而传递到子进程的标准输入。如果使用,它必须是字节序列,或者如果指定了 encoding 或 errors 或 text 为 true,则必须是字符串。使用时,会使用Popen.communicate()
Popen
自动创建内部stdin=PIPE
对象,并且也不能使用 stdin 参数。
若还要以字符串形式获取命令的输出,请添加
capture_output=True
:
subprocess.run("cat", input="foo\n", capture_output=True, text=True)
最简单的示例,将
foo
发送到 cat
并让它打印到屏幕上:
import subprocess
subprocess.run(['cat'], input=b'foo\n')
请注意,您需要发送二进制数据和回车符。