首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于提交命令的os.system

用于提交命令的os.system
EN

Stack Overflow用户
提问于 2013-03-25 04:22:09
回答 3查看 1.4K关注 0票数 2

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

也就是说,

代码语言:javascript
复制
import os
os.system(my_cmd)

但我想知道如何获得输出,例如,假设我在bash中,输入我的cmd,我将获得以下形式的输出:

代码语言:javascript
复制
Job <57960787> is submitted to queue <queueq>.

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

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-25 04:24:33

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

代码语言:javascript
复制
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 documentation here

代码语言:javascript
复制
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 here

代码语言:javascript
复制
>>> subprocess.check_output(["echo", "Hello World!"])
'Hello World!\n' 
票数 6
EN

Stack Overflow用户

发布于 2013-03-25 04:31:44

一个简单的例子:

代码语言:javascript
复制
>>> import os, sys
>>> cmd = "uname"
>>> b = os.popen(cmd, 'r', 1)
>>> b.read()
'Linux\n'

我正在运行Linux uname命令。

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

票数 1
EN

Stack Overflow用户

发布于 2013-03-25 04:50:10

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

示例:

代码语言:javascript
复制
import commands
my_cmd = 'ls -l'
status, output = commands.getstatusoutput(my_cmd)
print output
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15603540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档