簡體   English   中英

Python子進程僅給出1輸出而不是2

[英]Python subprocess only giving 1 output instead of 2

我想使用openssl和python子key.pem生成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,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM