我正在使用os。向系统提交一个命令。
。
import os
os.system(my_cmd)
但是我想知道我如何获得输出,即,让我们说我在bash中,我输入cmd,我会得到这种形式的输出:
Job <57960787> is submitted to queue <queueq>.
如何在python中使用os.system(cmd)获取文本输出,并对其进行解析以获得作业id 57960787。
谢谢!
最好在这里使用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
或者你也可以使用os.popen
文档
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
, Documentation在这里
>>> subprocess.check_output(["echo", "Hello World!"])
'Hello World!n'
简单的例子:
>>> import os, sys
>>> cmd = "uname"
>>> b = os.popen(cmd, 'r', 1)
>>> b.read()
'Linuxn'
我正在运行Linux uname
命令。
os.popen()执行命令并返回一个文件类型对象,您可以使用该对象读取命令的输出。
os.system
不返回输出。因此,您可以使用commands
模块。
的例子:
import commands
my_cmd = 'ls -l'
status, output = commands.getstatusoutput(my_cmd)
print output