Chinaunix首页 | 论坛 | 博客
  • 博客访问: 231214
  • 博文数量: 57
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 557
  • 用 户 组: 普通用户
  • 注册时间: 2015-10-01 18:05
文章分类

全部博文(57)

文章存档

2017年(57)

我的朋友

分类: Python/Ruby

2017-11-10 21:32:13

 commands模块
用Python写运维脚本时,经常需要执行linux shell的命令,Python中的commands模块专门用于调用Linux shell命令,并返回状态和结果,下面是commands模块的3个主要函数:

1.commands.getoutput('shell command')

执行shell命令,返回结果(string类型)

点击(此处)折叠或打开

  1. In [2]: commands.getoutput('pwd')
  2. Out[2]: '/root'

2. commands.getstatus('file')

该函数已被python丢弃,不建议使用,它返回 ls -ld file 的结果(String


点击(此处)折叠或打开

  1. In [3]: commands.getstatus('paramiko-1.16.1.tar.gz')
  2. Out[3]: '-rw-r--r-- 1 root root 269824 Oct 2 14:27 paramiko-1.16.1.tar.gz'
3. commands.getstatusoutput('shell command')


执行shell命令, 返回两个元素的元组tuple(status, result),status为int类型,result为string类型。

cmd的执行方式是{ cmd ; } 2>&1, 故返回结果包含标准输出和标准错误.


点击(此处)折叠或打开

  1. In [10]: commands.getstatusoutput('w')
  2. Out[10]:
  3. (0,
  4.  ' 09:21:14 up 8 min, 2 users, load average: 0.00, 0.02, 0.00\nUSER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT\nroot pts/0 9.110.187.1 09:12 0.00s 0.39s 0.38s /usr/bin/python\nroot pts/1 9.110.187.1 09:14 6:19 0.00s 0.00s -bash')
sys 模块
sys模块包括了一组非常实用的服务,内含很多方法和,用来处理Python运行时配置以及资源,从而可以与前当程序之外的系统环境交互。

1.sys模块重要函数变量
1 )、 sys.stdin 标准输入流。
2)、sys.stdout 标准输出流。
3 )、 sys.stderr 标准错误流。
4 )、sys.path 查找模块所在目录的目录名列表。
5 )、sys.argv 命令行的参数,包括脚本名称。
6 )、sys.platform 返回当前系统平台,如:win32、Linux等。

2.sys常用方法使用说明

sys.exit方法可以退出当前的程序,可以提供一个整数类型,通常我们用0表示功能,做为这个方法的参数,
当然也可以用参数,表示错误不成功的报错信息。sys.modules方法可以将模块的名字映射到实际存在的模块上,它只应用于目前导入的模块。上面有3个模块变量:sys.stdin、sys.stdout、sys.stderr它们都是文件(file-like)流对象。

实例如下:

点击(此处)折叠或打开

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. # Author :Alvin.Xie
  4. # @Time :2017/11/11 9:28
  5. # @File :systest.py

  6. import sys
  7. # 使用sys.argv[0]获得脚本名称
  8. print 'Script name is :', sys.argv[0]
  9. # 根据sys.path的路径来搜索module.name
  10. print 'Path has', sys.path

  11. # 使用sys模块查找内建模块


  12. def dump(module):
  13.     print module, '=>',
  14.     if module in sys.builtin_module_names:
  15.         print '内建模块'
  16.     else:
  17.         module = __import__(module)
  18.         print module.__file__


  19. dump("os")
  20. dump("sys")
  21. dump("string")
  22. dump("strop")
  23. dump("zlib")
执行结果如下:
Script name is : D:/PycharmProjects/s13/day6/systest.py
Path has ['D:\\PycharmProjects\\s13\\day6', 'D:\\PycharmProjects\\s13', 'C:\\Windows\\system32\\python27.zip', 'C:\\python\\python27\\DLLs', 'C:\\python\\python27\\lib', 'C:\\python\\python27\\lib\\plat-win', 'C:\\python\\python27\\lib\\lib-tk', 'C:\\python\\python27', 'C:\\python\\python27\\lib\\site-packages']
os => C:\python\python27\lib\os.pyc
sys => 内建模块
string => C:\python\python27\lib\string.pyc
strop => 内建模块
zlib => 内建模块




阅读(1258) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~