subprocess 模块和 os.system 或 os.popen 等函数相比,功能更为强大和灵活,是 Python 官方推荐的执行系统命令的方法。主要的优势包括:
-  更强的错误处理: subprocess模块可以更精细地控制错误输出和错误代码,而os.system只返回一个状态码。
-  更好的输出控制: subprocess可以获取命令的标准输出和错误输出,可以很方便地用于进一步处理。
-  更安全: subprocess通过列表的形式传递命令和参数,避免了 shell 注入攻击的风险。而os.system可能因为字符串拼接而产生安全问题。
-  更多功能: subprocess还支持更多高级功能,例如输入/输出重定向、环境变量控制、进程管道等。
因此,如果需要在 Python 中执行系统命令,推荐优先使用 subprocess 模块。
示例
import subprocesscommand = 'ssh node "cd /home/mazu/run_path; nohup ./n*o_4d_dynamic_pub_app &" > /dev/null'
process = subprocess.Popen(command, shell=True)