如何在使用Python的subprocess.run()函数时,将字符串"foo"传递给期望从标准输入接收的程序?
将input="你想要的任何字符串"
和text=True
传递给subprocess.run
:
import subprocess
subprocess.run("cat", input="foo\n", text=True)
subprocess.run
文档:
传递给
Popen.communicate()
的 input 参数将被传递到子进程的标准输入(stdin)。如果使用它,必须是字节序列。如果指定了 encoding 或 errors ,或者 text 为 True,则可以使用字符串。使用时,会自动创建带有stdin=PIPE
的内部Popen
对象,并且不能再使用 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')