2017-06-17 57 views
0

跑到我试图运行我的文件“counting.py”在终端但不直接。我正在使用“almost.py”中的subprocess模块​​,它告诉终端在counting.py中运行“count(a,b)”特定函数。捕捉蟒蛇功能的实际产出从subprocess.Popen模块

***计数(A,B)有两个串a和b,并返回总字数

almost.py被成功引导终端运行计数(A,B)在counting.py。但是,在通过子进程运行后,我无法检索count(a,b)函数的实际输出。我该怎么做?

almost.py

import subprocess 
output = subprocess.Popen(['python', 'counting.py', 'count', '"let roll"', '"love it most "']) 
print (output) #it is not actually return the real value of count(a, b)!!! 

counting.py

from sys import argv 

def count (a, b): 
    word = False 
    a = " " + a + " " 
    b = " " + b + " " 

    result = 0 

    for i in range (len (a)-1): 
     if a[i] == " " and a[i+1] != " ": 
      word = True 
      result += 1 
     else: 
      word = False 

    for i in range (len (b)-1): 
     if b[i] == " " and b[i+1] != " ": 
      word = True 
      result += 1 
     else: 
      word = False 


    return result 


if __name__ == "__main__": 
    print(count (argv[2], argv[3])) 
+0

为什么你这样做,如果你可以'导入计数',然后从Python调用'counting.count'没有任何子进程吗? – ForceBru

+0

@ForceBru因为我正在学习这个概念。原始项目涉及从终端运行一个bash文件不counting.py这就是为什么我必须使用子进程来运行该文件,而不是导入它 –

回答

0

子模块将返回subprocess.Popen Python对象。

你可以做同样认为此代码。

from counting import count 

output = count("let roll","love it most") 
print output 
+0

原始项目涉及从终端运行一个bash文件不counting.py这就是为什么我有使用子进程来运行该文件并且不导入它。因此,我正在寻找使用子进程检索输出 –