用于提交命令的os.system

Dna*_*iel 2 python lsf

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

也就是说,

import os
os.system(my_cmd)
Run Code Online (Sandbox Code Playgroud)

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

Job <57960787> is submitted to queue <queueq>.
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

eng*_*ree 6

最好在这里使用subprocess模块文档,例如:

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
Run Code Online (Sandbox Code Playgroud)

或者你甚至可以在这里使用os.popen文档,

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

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

>>> subprocess.check_output(["echo", "Hello World!"])
'Hello World!\n' 
Run Code Online (Sandbox Code Playgroud)