利用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基本可全部搞定;

最新文章

  1. [LeetCode] Largest Divisible Subset 最大可整除的子集合
  2. sqL编程篇(三) 游标与存储过程
  3. Hexo搭建Github静态博客
  4. IL查看override
  5. 看了这篇文章,Java编程速度我都惊呆了
  6. 方法的可变长参数 传入参数个数不确定可用(Type ... values)
  7. C51应用 Modbs Rtu协议实现与KEPServerEx 通信
  8. Linux内核网络协议栈优化总纲
  9. WPF关于“在“System.Windows.Markup.StaticResourceHolder”上提供值时引发了异常。”问题解决办法
  10. C++雾中风景4:多态引出的困惑,对象的拷贝?
  11. python_如何对字典进行排序?
  12. 网络编程_tcp与dup协议简单应用
  13. shell 到达一定数量文件自动删除最久时间文件
  14. nodejs中req.body对请求参数的解析问题
  15. ODBC的基础架构
  16. $.post 提示错误: Uncaught SyntaxError: Unexpected token :
  17. orge资源
  18. .Net Core Linux部署之进程守护 Supervisor 安装配置
  19. Failed to read schema document
  20. PHP把数据库数据导入Excel

热门文章

  1. ES6入门之变量的解构赋值(二)
  2. 基于Spring Boot的统一异常处理设计
  3. 利用hash远程登陆系统
  4. 14.Linux压缩/打包
  5. 从零开始搭建Electron+Vue+Webpack项目框架,一套代码,同时构建客户端、web端(一)
  6. jquery复习
  7. Element-ui-安装
  8. SpringBoot中教你手把手配置 https
  9. 以Mnist为例从头开始自己建立数据集,搭建resnet34,识别Mnist
  10. Windows(Server)环境安装Web服务器(Apache,PHP,Mysql)图文教程