0

假设我有一个程序some_binary可以读取数据:

some_binary < input

whereinput通常是磁盘中的文件。我想从 Python发送input而不写入磁盘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_columnsome_binarysome_binary < inputstdout

我有以下内容:

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);

但我不确定我是否朝着正确的方向前进。

4

1 回答 1

1

是的,你正朝着正确的方向前进。

您可以使用 pythonssubprocess.check_output()函数,它是subprocess.Popen(). Popen需要更多的基础设施。例如,您需要调用comminucate()的返回值Popen才能使事情发生。

就像是

output = subprocess.check_output([cmd], stdin = my_input)

应该适用于您的情况。

于 2013-03-26T22:43:42.480 回答