python:调用bash
2024-09-01 12:30:39
利用os模块
python调用Shell脚本,有三种方法:
- os.system(cmd)返回值是脚本的退出状态码
- os.popen(cmd)返回值是脚本执行过程中的输出内容
- commands.getstatusoutput(cmd) 返回(status, output)
http://www.jb51.net/article/55327.htm
1. os.system(command)
此函数会启动子进程,在子进程中执行command,并返回command命令执行完毕后的退出状态,如果command有执行内容,会在标准输出显示。这实际上是使用C标准库函数system()实现的。
缺点:这个函数在执行command命令时需要重新打开一个终端,并且无法保存command命令的执行结果。
实例:os.system('ls -l *')
2. os.popen(command,mode)
打开一个与command进程之间的管道。这个函数的返回值是一个文件对象,可以读或者写(由mode决定,mode默认是’r')。如果mode为’r',可以使用此函数的返回值调用read()来获取command命令的执行结果。
os.system(cmd)或os.popen(cmd),前者返回值是脚本的退出状态码,后者的返回值是脚本执行过程中的输出内容。实际使用时视需求情况而选择。
output = os.popen('cat /proc/cpuinfo')
print output.read()
tmp = os.popen('ls -l *').readlines()
3. commands.getstatusoutput(command)
- commands.getstatusoutput(cmd) 返回(status, output).
- commands.getoutput(cmd) 只返回输出结果
- commands.getstatus(file) 返回ls -ld file的执行结果字符串,调用了getoutput,不建议使用此方法.
使用os.popen()函数执行command命令并返回一个元组(status,output),分别表示command命令执行的返回状态和执行结果。对command的执行实际上是按照{command;} 2>&1的方式,所以output中包含控制台输出信息或者错误信息。output中不包含尾部的换行符。
(status, output) = commands.getstatusoutput('cat /proc/cpuinfo')
print status, output
4. subprocess模块
此模块在python2.4中初次亮相,其中集中了关于进程的诸多操作,其中的call()完全替代了system(),而popen()被更为丰富的Popen类替代;
总结:python提供了十分完善的调用shell命令的功能,在实战中,我碰到的问题,有system和popen基本可全部搞定;
最新文章
- [LeetCode] Largest Divisible Subset 最大可整除的子集合
- sqL编程篇(三) 游标与存储过程
- Hexo搭建Github静态博客
- IL查看override
- 看了这篇文章,Java编程速度我都惊呆了
- 方法的可变长参数 传入参数个数不确定可用(Type ... values)
- C51应用 Modbs Rtu协议实现与KEPServerEx 通信
- Linux内核网络协议栈优化总纲
- WPF关于“在“System.Windows.Markup.StaticResourceHolder”上提供值时引发了异常。”问题解决办法
- C++雾中风景4:多态引出的困惑,对象的拷贝?
- python_如何对字典进行排序?
- 网络编程_tcp与dup协议简单应用
- shell 到达一定数量文件自动删除最久时间文件
- nodejs中req.body对请求参数的解析问题
- ODBC的基础架构
- $.post 提示错误: Uncaught SyntaxError: Unexpected token :
- orge资源
- .Net Core Linux部署之进程守护 Supervisor 安装配置
- Failed to read schema document
- PHP把数据库数据导入Excel
热门文章
- ES6入门之变量的解构赋值(二)
- 基于Spring Boot的统一异常处理设计
- 利用hash远程登陆系统
- 14.Linux压缩/打包
- 从零开始搭建Electron+Vue+Webpack项目框架,一套代码,同时构建客户端、web端(一)
- jquery复习
- Element-ui-安装
- SpringBoot中教你手把手配置 https
- 以Mnist为例从头开始自己建立数据集,搭建resnet34,识别Mnist
- Windows(Server)环境安装Web服务器(Apache,PHP,Mysql)图文教程