假设我有一个名为some_binary
的程序可以将数据读取为:
some_binary < input
其中input
通常是磁盘中的文件。我想将input
从Python 发送到some_binary
而不写入磁盘。
例如input
通常是包含以下内容的文件:
0 0.2
0 0.4
1 0.2
0 0.3
0 0.5
1 0.7
要在Python中模拟类似的东西,我有:
import numpy as np
# Random binary numbers
first_column = np.random.random_integers(0,1, (6,))
# Random numbers between 0 and 1
second_column = np.random.random((6,))
如何将first_column
和second_column
的连接提供给some_binary
,就好像我从命令行调用some_binary < input
,并收集stdout
一样一个字符串?
我有以下内容:
def run_shell_command(cmd,cwd=None,my_input):
retVal = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stdin=my_input, cwd=cwd);
retVal = retVal.stdout.read().strip('\n');
return(retVal);
但我不确定我是朝着正确的方向前进。
答案 0 :(得分:1)
是的,你正朝着正确的方向前进。
您可以使用pythons subprocess.check_output()
函数,它是subprocess.Popen()
周围的便利包装器。 Popen
需要更多基础架构。例如,您需要在comminucate()
的返回值上调用Popen
才能使事情发生。
像
这样的东西output = subprocess.check_output([cmd], stdin = my_input)
应该适用于您的情况。