シェルで実行されたジョブコマンドの出力をPythonの文字列として表示したい。
私はこのコードを持っています
import subprocess
p1 = subprocess.Popen(['jobs'], shell=True, stdout=subprocess.PIPE)
print p1.communicate()
しかし、これはうまくいかないようです。私が得る出力は -
('', None)
これを修正するにはどうすればよいですか?
シェルで実行されたジョブコマンドの出力をPythonの文字列として表示したい。
私はこのコードを持っています
import subprocess
p1 = subprocess.Popen(['jobs'], shell=True, stdout=subprocess.PIPE)
print p1.communicate()
しかし、これはうまくいかないようです。私が得る出力は -
('', None)
これを修正するにはどうすればよいですか?
使用できますsubprocess.check_output
:
In [5]: import subprocess
In [6]: output = subprocess.check_output("ps")
In [7]: print output
PID TTY TIME CMD
2314 pts/2 00:00:06 bash
4084 pts/2 00:00:03 mpdas
7315 pts/2 00:00:02 python
7399 pts/2 00:00:00 ps
In [8]:
あなたのコードは私にとってはうまくいきます。
In [11]: import subprocess
In [12]: p1 = subprocess.Popen(['ps'], stdout=subprocess.PIPE)
In [13]: print p1.communicate()[0]
PID TTY TIME CMD
2314 pts/2 00:00:06 bash
4084 pts/2 00:00:03 mpdas
7315 pts/2 00:00:02 python
7682 pts/2 00:00:00 ps
In [14]: