2

os.systemを使用してシステムにコマンドを送信しています。

つまり、

import os
os.system(my_cmd)

しかし、どうすれば出力を取得できるのでしょうか。つまり、bashにいて、cmdと入力すると、次の形式の出力が得られます。

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

Pythonでos.system(cmd)を使用してテキスト出力を取得し、それを解析してジョブID57960787を取得するにはどうすればよいですか。

ありがとう!

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 に答える