【问题标题】:capturing the REAL output of python function ran from subprocess.Popen module捕获从 subprocess.Popen 模块运行的 python 函数的 REAL 输出
【发布时间】:2017-06-17 11:53:49
【问题描述】:

我正在尝试在终端中运行我的文件“counting.py”,但不是直接运行。我正在使用“almost.py”中的子进程模块,它告诉终端在counting.py中运行特定的函数“count(a, b)”。

***count(a, b) 接受两个字符串 a 和 b 并返回总字数

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

几乎.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]))

【问题讨论】:

  • 如果你可以 import counting 然后直接从 Python 调用 counting.count 而没有任何子进程,你为什么还要这样做?
  • @ForceBru 因为我正在尝试学习这个概念。原始项目涉及从终端运行 bash 文件 notcount.py 这就是为什么我必须使用子进程来运行文件而不是导入它

标签: python python-3.x subprocess


【解决方案1】:

subprocess 模块将返回 subprocess.Popen python 对象。

你可以用这段代码做同样的想法。

from counting import count

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

【讨论】:

  • 原始项目涉及从终端运行 bash 文件 notcounting.py 这就是为什么我必须使用子进程来运行文件而不是导入它的原因。因此,我正在寻找使用子进程检索输出
猜你喜欢
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-25
  • 2016-04-16
  • 2023-02-21
相关资源
最近更新 更多