p.stdout.read()不会在我的Python 3代码工作(p.stdout.read() d

2019-10-19 03:46发布

我尝试创建使用MAC OS的子模块的子进程。 下面是我的代码:

import subprocess

p = subprocess.Popen("app",
        stdin = subprocess.PIPE,
        stdout = subprocess.PIPE,
        stderr = subprocess.PIPE,
        shell = True)
p.stdin.write(bytes("3\n", "ascii"))
p.stdin.write(bytes("4\n", "ascii"))
print(p.stdout.read())

应用程序的源代码是:

#include <iostream>

using namespace std;

int main()
{
    int x, y;
    cout << "input x: " << endl;
    cin >> x;
    cout << "input y: " << endl;
    cin >> y;
    cout << x << " + " << y << " = " << x + y << endl;

    return 0;
}

当我执行的Python代码,输出为:

b''

为什么输出是一个奇怪的字符串?

Answer 1:

输出b''的意思是“一个空字节串”。

这是因为没有stdout输出提供,因为你的子过程未成功启动。

根据需要,如果我打开子作为你的榜样为我工作"./app"但如果我只是说"app" 。 据推测,这是因为,在类Unix系统(与Windows),当前工作目录是不是默认的shell路径上,因此"app"是根本无法找到。

如果你曾说过

print(p.stderr.read())

那么它可以告诉你什么问题是本身。



文章来源: p.stdout.read() doesn't work in my Python 3 codes