【发布时间】:2017-07-11 06:31:27
【问题描述】:
我有一个包含整数的列表,并希望将其定向到一个 shell 命令,该命令从中创建一个直方图(请参阅here)。
现在,让我们通过一个简单的 shell 脚本echo_script.sh 来模拟直方图生成脚本,它会回显所有输入:
#/bin/sh
echo $@
在 Python 中,我想将列表的内容定向到该命令。我想这涉及到对subprocess 的一些摆弄。
numbers = [1, 2, 3]
# subprocess stuff, writing numbers to stdin of echo_script.sh process?
我想将以下输出输出到标准输出:
1 2 3
请注意,我知道涉及将列表内容存储在临时文件中并将该文件传送到 echo_script.sh 的解决方案。我想避免这种情况。
编辑:我正在使用的 histogram.py 脚本不支持读取任意数量的附加参数,就像echo 1 2 3 那样。它仅从stdin 读取。因此,上面的示例具有误导性。我尝试过的一种方法:
proc = subprocess.Popen(["wc", "-l"], stdin=subprocess.PIPE)
proc.stdin.write(bytes([42]))
这会输出 1,这是正确的行数,但实际上是写入的字节数。所以我还有两个问题:
- 如何正确使用字节数组发送到
proc.stdin.write? - 如何将 proc 的 stdout 重定向到当前进程?
【问题讨论】:
标签: python subprocess pipe