Ray*_*emi 8 subprocess python-3.x
这当然是在其他地方关于子流程的长期讨论的一部分。但答案很简单,应该打破。
如果我使用 Python 3 的 subprocess.run(),如何将字符串“foo”传递给在 stdin 上期望它的程序?
小智 11
通过input="whatever string you want"并text=True前往subprocess.run:
import subprocess\nsubprocess.run("cat", input="foo\\n", text=True)\nRun Code Online (Sandbox Code Playgroud)\n根据文档subprocess.run:
\n\n输入参数被传递到subprocess\xe2\x80\x99s stdin 。
\nPopen.communicate()如果使用,它必须是字节序列,或者如果指定了编码或错误或文本为 true,则它必须是字符串。Popen使用时,会自动使用 来创建内部对象stdin=PIPE,并且也可能不会使用stdin参数。
还要以字符串形式获取命令的输出,请添加capture_output=True:
subprocess.run("cat", input="foo\\n", capture_output=True, text=True)\nRun Code Online (Sandbox Code Playgroud)\n
最简单的例子,发送foo到cat并让它打印到屏幕上。
import subprocess
subprocess.run(['cat'],input=b'foo\n')
Run Code Online (Sandbox Code Playgroud)
请注意,您发送的是二进制数据和回车符。
| 归档时间: |
|
| 查看次数: |
2883 次 |
| 最近记录: |