python subprocess 子进程执行系统命令
使用 python 的 subprocess 模块执行系统命令时,建议按下面的方式使用 run
,而不使用 check_output
。
check_output 获取错误输出 stderr 的时候会有问题。无法获取错误输出。使用 run 时,可以根据 renturncode 来判断进程结束的状态。
import subprocess
p = subprocess.run(args, stdout = subprocess.PIPE, stderr=subprocess.PIPE)
out = p.stdout.decode('utf-8')
error = p.stderr.decode('utf-8')
return_code = p.returncode
其中参数 args 建议使用列表,列表的第一个元素是要执行的命令,之后的元素是命令的参数。例如,args=['ls', '-l']