在Windowsterminal中获取外部python程序的输出

我正在运行下面的Python代码。 我希望它会在terminal执行一些外部Python代码,并将输出保存在一个numpy数组,然后我可以追加到另一个numpy数组添加一个额外的列。 它在shell中运行外部python命令; 但我找不到一个方法来获取输出,以便我可以将其保存在我的程序中。

这里是代码:

import csv import GetAlexRanking #External Method exposed here import subprocess import pandas as p import numpy as np loadData = lambda f: np.genfromtxt(open(f,'r'), delimiter=' ') with open('train.tsv','rb') as tsvin, open('PageRanks.csv', 'wb') as csvout: tsvin = list(np.array(p.read_table('train.tsv'))[:,0]) csvout = csv.writer(csvout) for row in tsvin: count = 0 cmd = subprocess.Popen("python GetAlexRanking.py " + row ,shell=True) (output, err) = cmd.communicate() exit_code = cmd.wait() print exit_code #testing print output #**error here**, always prints "none" csvout.write(url + "\t" + cmd_string) #writing count+=1 

我怎样才能得到我的“python GetAlexRanking.py”命令输出,并将其保存在我的Python代码中的variables?

谢谢。

使用stdout=subprocess.PIPE 。 没有它,子进程直接将输出打印到终端。

 cmd = subprocess.Popen("python GetAlexRanking.py " + row , stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) (output, err) = cmd.communicate()