Python调用Shell命令的三种常用方法解析

落日邮差
落日邮差
发布时间:2026-10-13| 3人浏览过
原创

本文详细介绍Python中执行Shell命令的三种主要方式:os.system、os.popen以及commands.getstatusoutput。对比分析了各方法的返回值特性、优缺点及适用场景,帮助开发者根据是否需要获取输出内容或仅关注执行状态,选择最合适的调用方案。

1. os.system(shell_command)

该方法直接在终端输出执行结果,并返回表示执行状态的整数(0或1)。

此函数会启动一个子进程来执行指定的command,并返回该命令执行完毕后的退出状态码。如果command有具体的执行内容,这些内容会显示在标准输出中。其底层实现实际上是调用了C语言标准库中的system()函数。

该方法的缺点在于,执行command命令时需要重新打开一个终端环境,并且无法直接保存或获取command命令的具体执行结果(输出内容)。

os.system('cat /etc/passwdqc.conf')

2. os.popen()

该函数用于打开一个与command进程之间的通信管道。其返回值是一个文件对象,支持读取或写入操作(由mode参数决定,默认值为'r')。当mode设置为'r'时,可以通过调用该文件对象的read()方法来获取command命令的执行结果。

在实际使用中,os.system(cmd)返回的是脚本的退出状态码,而os.popen(cmd)返回的是脚本执行过程中的具体输出内容。开发者应根据实际需求(是关注状态还是内容)来选择合适的函数。

tmp = os.popen('ls -l *').readlines()

3. commands.getstatusoutput(command)

使用commands.getstatusoutput(command)函数执行command命令,并返回一个包含两个元素的元组(status, output),分别表示command命令执行的返回状态和执行结果。对command的实际执行方式等同于在shell中执行{command;} 2>&1,因此output变量中既包含控制台的标准输出信息,也包含错误信息。需要注意的是,output字符串不包含尾部的换行符。

(status, output) = commands.getstatusoutput("netstat -apn|grep {0} | awk '{{{1}}}' |xargs echo ".format(port, 'print $7'))
rr = re.compile(r'(\d+)/java')

op = rr.findall(output) #查找所有包含'java'的单词 

for i in range(len(op)):
  os.system("kill -9 {0}".format(op[i]))

#按照标志杀进程
os.system("ps -ef | grep {0} | awk '{{{1}}}' | xargs kill -9".format(key, 'print $2'))

在实际使用时,感觉 commands.getstatusoutput(command) 用起来比较方便,开发者可根据实际要实现的功能选择合适的方案。

总结

以上就是本文关于Python执行使用Shell命令方法分享的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:python通过socket实现多个连接并实现ssh功能详解、Python基础练习之用户登录实现代码分享、Python入门之三角函数全解【收藏】等。有什么问题可以随时留言,小编会及时回复大家的。感谢朋友们对本站的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。