我有一个python脚本,我需要调用一个shell命令。 shell命令可以接受来自文件或stdin的输入。
在我的脚本中,输入存储在变量中。调用命令的正确方法是什么?如果重要,那么shell命令不会产生输出。
我知道我可以将变量的内容写入文件并使用该文件作为参数调用该命令,但这似乎不够优雅。当然,还有更好的方法。
有人可以告诉我它是什么吗?感谢。
答案 0 :(得分:3)
您可以使用subprocess模块。
import subprocess
process = subprocess.Popen(["Mycommand", "with", "arguments"], stdin=subprocess.PIPE)
process.communicate("My text")
答案 1 :(得分:0)
请参阅How do I pass a string into subprocess.Popen (using the stdin argument)?
对于python 3.5+(编码为3.6+),您可以使用输入:
from subprocess import check_output
output = check_output(["cat","-b"],
input="-foo\n-bar\n-foobar", encoding='ascii')
print(output)