Sponsored Link

カテゴリー別アーカイブ: 実行

(37) subprocessで外部のプログラムを実行

(37) subprocessで外部のプログラムを実行

subprocess.call を使用して外部プログラムを実行してみる。

call は、外部プログラムの終了を待って復帰する。
call は、外部プログラムの戻り値を返す。

>>> import subprocess as sp
>>>
>>> arg = ['gcc','--version']
>>>
>>> ret = sp.call(arg)
gcc (GCC) 4.9.0
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

>>>
>>> ret
0

subprocess.Popen でも同じことができる。

>>> import subprocess as sp
>>>
>>> arg = ['gcc','--version']
>>>
>>> proc = sp.Popen(arg, stdout=sp.PIPE)
>>> proc.returncode
0
>>> stdoutData, stderrData = proc.communicate()
>>>
>>> stdoutData
'gcc (GCC) 4.9.0\nCopyright (C) 2014 Free Software Foundation, Inc.\nThis is free software; see the source for copying conditions.  There is NO\nwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n'
>>>
>>> out = stdoutData.split('\n')
>>> out[0]
'gcc (GCC) 4.9.0'
>>>
>>> out[1]
'Copyright (C) 2014 Free Software Foundation, Inc.'
>>>
>>> out[2]
'This is free software; see the source for copying conditions.  There is NO'
>>>
>>> out[3]
'warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.'

(5) モジュールの属性にアクセス

(5) モジュールの属性にアクセス

test.py

print 'Hello'

a = 123
b = 456

print '%d x %d = %d' % (a, b, a*b)

モジュール(test.py)をimportした後、その属性にアクセスできる。

[user@dog-server]$ python
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import test
Hello
123 x 456 = 56088
>>> test.a
123
>>> test.b
456

(4) プログラムファイル(=モジュール)を作成・実行

(4) プログラムファイル(=モジュール)を作成・実行

以下のようなプログラムファイル test.pyを作成する。

print 'Hello'

a = 123
b = 456

print '%d x %d = %d' % (a, b, a*b)

作成したプログラムファイルを linuxのコマンドラインから実行する。

[user@dog-server]$ python test.py
Hello
123 x 456 = 56088