文章目录


1. 介绍

commands模块是python的内置模块,他共有三个函数,使用help(commands)可以查看到

2. 方法

FUNCTIONS
getoutput(cmd)
Return output (stdout or stderr) of executing cmd in a shell.

getstatus(file)
Return output of "ls -ld " in a string.

getstatusoutput(cmd)
Return (status, output) of executing cmd in a shell.

2.1 commands.getstatusoutput(cmd)

返回一个元组(status,output)
status代表的shell命令的返回状态,如果成功的话是0;output是shell的返回的结果
用os.popen()执行命令cmd, 然后返回两个元素的元组(status, result),其中 status为int类型,result为string类型。cmd执行的方式是{ cmd ; } 2>&1, 这样返回结果里面就会包含标准输出和标准错误.

>>> import commands
>>> status, output = commands.getstatusoutput("ls")
>>> print status
0
>>> print output
atom:
bookstore
cookie.py~

2.2 commands.getstatus(file)

只返回执行的结果, 忽略返回值.返回ls -ld file执行的结果.

commands.getstatus(file)

注意:该函数已被python丢弃,不建议使用

2.3 commands.getoutput(cmd)

只返回执行的结果, 忽略返回值.

>>> print commands.getoutput("ls")
atom:
bookstore
cookie.py~

3 练习

#!/usr/bin/python
#coding:utf-8
import os,sys,commands

def openfile():
grains = {}
_open_file=65533
try:
getulimit=commands.getstatusoutput('source /etc/profile;ulimit -n')
except Exception,e:
pass
if getulimit[0]==0:
_open_file=int(getulimit[1])
grains['max_open_file'] = _open_file
print grains
return grains
openfile()

输出:

$ python com1.py 
{'max_open_file': 1024}