【问题标题】:subprocess.check_output still print in stdoutsubprocess.check_output 仍然在标准输出中打印
【发布时间】:2017-11-22 09:37:02
【问题描述】:

我想从 commande 的变量中获取标准输出输出 经过一些研究,我发现 subprocess.check_output(cmd) 做得很好!但它仍然在标准输出中打印一些输出!

cmd = ["openssl","rsa", "-in","pubkey.pem","-pubin","-text","-modulus"]
output = subprocess.check_output(cmd)

我在输出变量中得到了我想要的东西,但它仍然打印我

writing RSA key

在输出变量中我有

'Public-Key: (576 bit)\nModulus:\n    00:c2:cb:b2:4f:db:f9:23:b6:12:68:e3:f1:1a:38:\n    96:de:45:74:b3:ba:58:73:0c:bd:65:29:38:86:4e:\n    22:23:ee:eb:70:4a:17:cf:d0:8d:16:b4:68:91:a6:\n    14:74:75:99:39:c6:e4:9a:af:e7:f2:59:55:48:c7:\n    4c:1d:7f:b8:d2:4c:d1:5c:b2:3b:4c:d0:a3\nExponent: 65537 (0x10001)\nModulus=C2CBB24FDBF923B61268E3F11A3896DE4574B3BA58730CBD652938864E2223EEEB704A17CFD08D16B46891A61474759939C6E49AAFE7F2595548C74C1D7FB8D24CD15CB23B4CD0A3\n-----BEGIN PUBLIC KEY-----\nMGQwDQYJKoZIhvcNAQEBBQADUwAwUAJJAMLLsk/b+SO2Emjj8Ro4lt5FdLO6WHMM\nvWUpOIZOIiPu63BKF8/QjRa0aJGmFHR1mTnG5Jqv5/JZVUjHTB1/uNJM0VyyO0zQ\nowIDAQAB\n-----END PUBLIC KEY-----\n'

pubkey.pem 的内容是:

-----BEGIN PUBLIC KEY-----
MGQwDQYJKoZIhvcNAQEBBQADUwAwUAJJAMLLsk/b+SO2Emjj8Ro4lt5FdLO6WHMM
vWUpOIZOIiPu63BKF8/QjRa0aJGmFHR1mTnG5Jqv5/JZVUjHTB1/uNJM0VyyO0zQ
owIDAQAB
-----END PUBLIC KEY-----

感谢帮助:D

【问题讨论】:

    标签: python command-line subprocess stdout


    【解决方案1】:

    check_output 允许您将stderr 重定向到文件描述符。我已将stderr 重定向到下面的“/dev/null”,我认为它可以满足您的需求:

    dev_null = open(os.devnull, 'w')
    output = subprocess.check_output(cmd, stderr=dev_null)
    

    【讨论】:

    • 哦,非常感谢!如果我想在变量中获得标准错误输出? :D
    猜你喜欢
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 2018-01-09
    • 1970-01-01
    • 2011-09-14
    • 2018-12-25
    • 2018-08-10
    相关资源
    最近更新 更多