Python 包subprocess测试
subprocess模块记录
在Python3 中官方建议使用subprocess代替旧的os 和 command 包。
之前一直在用subprocess.Popen 来执行shell命令,但这个命令很复杂。
这次在复习的过程中,看到说subprocess 中的call/check_call/getstatusoutput等方法是对Popen的封装。
实际测试比Popen方便很多。
测试结果
这是在Python 3.6.5 的测试结果
命令 | 返回结果 | 是否抛出异常 | 是否有shell参数 | 建议 |
---|---|---|---|---|
run | CompletedProcess | 否 | 是 | 否 |
call | 状态 | 否 | 是 | 是 |
check_call | 状态 | 是 | 是 | 是 |
getstatusoutput | (状态, 结果) | 否 | 否 | 是 |
getoutput | 结果 | 否 | 否 | 否 |
check_output | b’结果’ | 是 | 是 | 否 |
上述返回结果只有状态,则表示shell执行的内容直接打印输出到屏幕中,不会以返回值的形式传递。
Python 3.7 中对 run 做了优化,官方建议: You can now use run() in many cases, but lots of existing code calls these functions
本测试结果不适用Python 3.7