小心调用 subprocess,避免因 shell=True 而命令行解析错误
Python 中的 subprocess 模块可以轻松实现执行外部命令和进程的功能。...我们经常会用它来调用一些命令行工具的功能。但是在使用 subprocess 调用复杂命令时,有一个容易犯但影响比较大的错误 - 使用shell=True参数,导致命令行解析错误,子进程执行失败。...这个命令作为一个字符串传给 shell 执行,导致命令行被错误解析,子进程实际上失败执行。...解决方法也很简单,只需要删除 shell=True 参数,直接传入命令列表:
ret = subprocess.call(cmd, cwd="suites")
这样,命令行被正确解析为多个参数,子进程执行成功...总结
综上,调用 subprocess 执行复杂命令时,如果不必要,最好避免使用 shell=True。直接传入命令列表,可以最大限度避免命令行解析错误的问题。