2

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

IE,

import os
os.system(my_cmd)

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

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

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

谢谢!

4

3 回答 3

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

或者您甚至可以在此处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使用文档

>>> subprocess.check_output(["echo", "Hello World!"])
'Hello World!\n' 
于 2013-03-24T20:24:33.200 回答
1

一个简单的例子:

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

我正在运行 Linuxuname命令。

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

于 2013-03-24T20:31:43.807 回答
0

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

例子:

import commands
my_cmd = 'ls -l'
status, output = commands.getstatusoutput(my_cmd)
print output
于 2013-03-24T20:50:10.373 回答