Python 子进程只给出 1 个输出而不是 2 个

Python subprocess only giving 1 output instead of 2

我想使用 openssl 和 python 子进程生成 2 个证书,分别是 key.pemcert.pem 并使用以下命令来执行此操作。

openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem

这个命令从终端执行时运行良好,但是当它在 python 子进程的帮助下从 python 脚本执行时,它只输出 key.pem 文件在所需的目录中,而不是 cert.pem 文件中。 以下是 python 脚本的代码片段:

    tempdirname = 'temp_cert/'
    keyname = 'key.pem'
    certname = 'cert.pem'

    expiration_period = '500'
    cmd = ['openssl', 'req', '-newkey', 'rsa:2048', '-nodes', '-keyout', tempdirname+keyname, '-x509', '-days', expiration_period, '-out', tempdirname+certname]
    p = subprocess.Popen(
        cmd,
        stdin=subprocess.PIPE,
        stdout=subprocess.PIPE,
        stderr=subprocess.PIPE,
        shell=False
    )
    out, err = p.communicate('\n')

我也想要cert.pem文件在同一个目录下。我应该怎么办? 我正在使用 python 2.7

使用以下方法解决了问题:

p = subprocess.Popen(
        cmd,
        stdin=subprocess.PIPE,
        shell=False
    )
#taking input like this
p.stdin.write("n")    
out, err = p.communicate('\n')

删除了以下几行,它开始工作了:

stdout=subprocess.PIPE,
stderr=subprocess.PIPE,