首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >subprocess.Popen缺少最后一个输出字符

subprocess.Popen缺少最后一个输出字符
EN

Stack Overflow用户
提问于 2017-08-04 21:24:01
回答 1查看 54关注 0票数 0

我有一个用C++编写的可执行文件,它将一些json写入标准输出。

比如说在终端上运行它,我有,

代码语言:javascript
复制
PS C:\Users\laerne\Projects\pylol> C:\Users\laerne\Projects\d\master\build\bin\Debug\software.exe --opt-descr
[
    {
        "name": "",
        "options": [
        ]
    },
    {
        "name": "run"
    },
    {
        "name": "normal-from-mesh"
    },
    {
        "name": "info"
    },
    {
        "name": "world-space-direction"
    },
    {
        "name": "position-from-mesh"
    },
    {
        "name": "ambient-occlusion"
    },
    {
        "name": "bent-normal-from-mesh"
    },
    {
        "name": "ambient-occlusion-from-mesh"
    },
    {
        "name": "curvature-from-mesh"
    },
    {
        "name": "position"
    },
    {
        "name": "normal-world-space"
    },
    {
        "name": "texture-from-mesh"
    },
    {
        "name": "height-from-mesh"
    },
    {
        "name": "thickness-from-mesh"
    },
    {
        "name": "curvature"
    },
    {
        "name": "color-from-mesh"
    },
    {
        "name": "opacity-mask-from-mesh"
    },
    {
        "name": "uv-map"
    }
]

现在我想从python中读取该json。为此,我调用subprocess来生成json。

代码语言:javascript
复制
subprocess.Popen(
  [r"C:\Users\laerne\Projects\d\master\build\bin\Debug\software.exe","--opt-descr"],
  stdout=subprocess.PIPE ).stdout.read()

但是,这将返回空字符串!尝试使用更大的json文本,我注意到最后几个~200~400个字符总是被删除,我不知道为什么。你能帮我猜猜为什么python顽固地拒绝读最后几个字符吗?

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-04 21:34:30

您忘记了等待子进程完成。尝试:

代码语言:javascript
复制
p = subprocess.Popen(  [r"C:\Users\laerne\Projects\d\master\build\bin\Debug\software.exe","--opt-descr"],
  stdout=subprocess.PIPE)
p.wait()
print(p.stdout.read())

或者,您可以尝试使用check_output:

代码语言:javascript
复制
print(subprocess.check_output([r"C:\Users\laerne\Projects\d\master\build\bin\Debug\software.exe","--opt-descr"])

编辑:它还有另一个方面--输出数据的应用程序。记住在您的C++应用程序中刷新标准输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45508048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档