python中执行命令

python中执行shell命令,有三种方法:os.system(),os.popen(),commands。

os.system()就是执行一个命令,返回该命令的退出状态值,如果命令有输出,会直接输出到终端:

status = os.system('ls')

os.popen()是打开一个pipe连向这个命令进程,获取其输出,返回的是一个文件对象,通过read()可以读取内容:

output = os.popen('ls')
print(output.read())

commands.getstatusoutput()就更高档便捷了,可以同时获取返回值和输出内容:

import commands
output = commands.getoutput('ls')
(status, output) = commands.getstatusoutput('ls')

commands.getoutput()就只获取输出内容,相当于os.popen()的效果。当status为0时,才表示命令正确执行了:

(status, output) = commands.getstatusoutput('ls abc')

(status, output)
(512, 'ls: cannot access abc: No such file or directory')

有个奇怪的现象是,当将错误输出导入/dev/null时,返回的status就总是为0了:

commands.getstatusoutput('ls abc &>/dev/null')
(0, 'ls: cannot access abc: No such file or directory')
发表于 2014年10月22日 01:06   评论:0   阅读:2521  



回到顶部

首页 | 关于我 | 关于本站 | 站内留言 | rss
python logo   django logo   tornado logo