用于提交命令的os.system

时间:2013-03-24 20:22:09

标签: python lsf

我正在使用os.system向系统提交命令。

即,

import os
os.system(my_cmd)

但是我想知道如何获得输出,即让我们说我在bash中并输入我的cmd,我会得到这种形式的输出:

Job <57960787> is submitted to queue <queueq>.

我如何在python中使用os.system(cmd)获取文本输出,并解析它以获取作业ID,57960787。

谢谢!

3 个答案:

答案 0 :(得分:6)

最好使用subprocess模块文档here,例如:

import subprocess,re
p = subprocess.Popen('commands',stdout=subprocess.PIPE,stderr=subprocess.PIPE)
results, errors = p.communicate()
print results
re.search('<(\d+)>', results).group(1) #Cheers, Jon Clements

或者您甚至可以使用os.popen文档here

p_os = os.popen("commands","r")
line = p_os.readline()
print line
re.search('<(\d+)>', line).group(1) #Cheers, Jon Clements

或者正如John Clements所建议的那样,您可以使用subprocess.check_output,文档here

>>> subprocess.check_output(["echo", "Hello World!"])
'Hello World!\n' 

答案 1 :(得分:1)

一个简单的例子:

>>> import os, sys
>>> cmd = "uname"
>>> b = os.popen(cmd, 'r', 1)
>>> b.read()
'Linux\n'

我正在运行Linux uname命令。

os.popen()执行命令并使用您可以读取命令输出的文件类型对象返回。

答案 2 :(得分:0)

os.system不会返回输出。因此,您可以使用commands模块。

示例:

import commands
my_cmd = 'ls -l'
status, output = commands.getstatusoutput(my_cmd)
print output