簡體   English   中英

如何將子進程 stderr 保存到變量?

[英]How do I save subprocess stderr to variable?

我正在使用以下代碼來運行子進程。 命令“cmd”有時可能會失敗,我希望將 stderr output 保存到變量中以供進一步檢查。

def exec_subprocess(cmd)
    with open('f.txt', 'w') as f:
        p = Popen(cmd, stderr=f)
        p.wait()

現在你可以看到我正在將 stderr 保存到文件中。 然后,我稍后使用 readlines() 將文件內容保存到列表中,這似乎效率低下。 我想要的是:

def exec_subprocess(cmd)
    err = []
    p = Popen(cmd, stderr=err)
    p.wait()
    return err

如何有效地將 stderr 保存到列表中?

你應該使用:

p=Popen(cmd, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
outs, errs = p.communicate()

如果要將 stderr 的 output 分配給變量。

Popen.communicate

使用子流程模塊

暫無
暫無

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

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