【问题标题】:Capture cout from c++ by subprocess in my pythonscript通过我的pythonscript中的子进程从c ++捕获cout
【发布时间】:2016-04-09 14:40:16
【问题描述】:

在我的 django python 脚本中,我运行我的 .cpp 程序。我想通过python中的子进程在c++中捕获我的标准输出(cout)。在 c++ 中,我尝试创建一个缓冲所有 couts 的流并将其返回 main(),但我可以在 main 函数中返回的唯一值是整数。 所以我的问题是:是否有任何其他可能通过 python 捕获 c++ couts 以任何其他方式进行价值?提前致谢!

我尝试使用 popen by:

command = 'g++ -std=c++0x mutualcepepe.cpp -D "bomba = ' + str(strT) + '"'
process = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)
output = process.communicate()
print output

我之前使用的另一种可能性是调用下面的行,它会为我提供包含来自 c++ 的 couts 的输出文件。

os.system('g++ -std=c++0x mutualcepepe.cpp -D "bomba = ' + str(strT) + '" -o mutualout')

【问题讨论】:

  • 你运行的是哪个版本的python

标签: python c++ subprocess stdout popen


【解决方案1】:

在 Python3 中,从子进程中获取 stdout 的最简单方法是使用 subprocess.getoutput

import subprocess
output = subprocess.getoutput('ls ./my_folder')
print(output)

Python3.5已经替换了这个方法,现在推荐的方法是:

result = subprocess.run(['ls', './my_folder'], stdout=subprocess.PIPE)
print(result)
print(result.stdout)

您可能还想将stdout 转换为字符串:

result_string = result.stdout.decode('utf-8')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2017-12-29
    • 1970-01-01
    • 2019-10-16
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多