Python 在系统自动化与测试中的应用
1. 进程处理
在 Python 中,处理子进程的主要模块是 subprocess 。它提供了高级抽象,更符合人们对“运行命令”的直观理解,与 Unix 中使用 exec 和 fork 的底层模型不同。
1.1 subprocess 与 os.system 的对比
os.system 存在一些问题,它会额外创建一个 shell 进程,这意味着它依赖于 shell,在一些特殊安装环境中,shell 可能与常见的不同。此外,shell 需要解析字符串,这就要求字符串必须正确序列化,而 shell 解析器的规范复杂,编写正确的代码并不容易,很多 bug 可能在最糟糕的时候才会出现,甚至可能导致安全漏洞。
1.2 subprocess 的高级函数
subprocess 分为高级函数和低级实现。高级函数 check_call 和 check_output 适用于大多数情况。它们的行为类似于在 shell 中使用 -e 或 set err ,如果命令返回非零值,会立即抛出异常。
例如,将用户添加到 docker 组:
i
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



