Python可以通过内置的os
或subprocess
模块直接调用命令行工具,核心方法包括os.system()
执行简单命令、subprocess.run()
实现高级控制(如捕获输出),以及os.popen()
获取命令返回结果。
-
os.system()
快速执行命令
适合执行简单命令且无需处理输出,直接传入字符串格式的命令即可。例如:pythonCopy Code
import os os.system("dir") # Windows查看目录
缺点是返回值仅为命令的退出状态码(0表示成功),无法直接获取输出内容。
-
subprocess.run()
灵活控制流程
Python 3.5+推荐使用此方法,支持参数定制(如超时、工作目录)和输出捕获:pythonCopy Code
import subprocess result = subprocess.run(["ls", "-l"], capture_output=True, text=True) print(result.stdout) # 打印命令输出
通过
stdout
和stderr
属性可分别获取标准输出和错误信息。 -
os.popen()
读取命令输出
适用于需要获取命令结果的场景,返回一个文件对象:pythonCopy Code
import os output = os.popen("ping baidu.com").read() print(output) # 显示ping命令的完整返回
注意:此方法已逐渐被
subprocess
替代,但在简单场景中仍可使用。 -
其他进阶技巧
- 实时输出:用
subprocess.Popen()
逐行读取命令输出流,避免阻塞。 - 管道操作:通过
subprocess.PIPE
连接多个命令,类似Shell的|
功能。 - 跨平台兼容:使用
shlex.split()
自动处理命令参数分隔,避免手动转义。
- 实时输出:用
总结:根据需求选择合适模块——os.system()
适合快速调用,subprocess
提供全面控制,而历史代码可能用到os.popen()
。复杂任务建议优先学习subprocess
的官方文档。