36.16. commands
--- コマンド実行ユーティリティ¶
バージョン 2.6 で非推奨: commands
モジュールは Python 3 で削除されました。代わりに subprocess
モジュールを使ってください。
commands
は、システムへコマンド文字列を渡して実行する os.popen()
のラッパー関数を含んでいるモジュールです。外部で実行したコマンドの結果や、その終了ステータスを扱います。
subprocess
がプロセスを生成してその結果を取得するためのより強力な手段を提供しています。 subprocess
モジュールを使う方が commands
モジュールを使うより好ましいです。
注釈
Python 3.x において、 getstatus()
および二つの隠し関数 (mk2arg()
と mkarg()
) は削除されました。また、 getstatusoutput()
と getoutput()
は subprocess
モジュールに移動されました。
commands
モジュールは以下の関数を定義しています。
-
commands.
getstatusoutput
(cmd)¶ 文字列 cmd を
os.popen()
を使いシェル上で実行し、タプル(status, output)
を返します。実際には{ cmd; } 2>&1
と実行されるため、標準出力とエラー出力が混合されます。また、出力の最後の改行文字は取り除かれます。コマンドの終了ステータスはC言語関数のwait()
の規則に従って解釈することができます。
-
commands.
getoutput
(cmd)¶ getstatusoutput()
に似ていますが、終了ステータスは無視され、コマンドの出力のみを返します。
-
commands.
getstatus
(file)¶ ls -ld file
の出力を文字列で返します。この関数はgetoutput()
を使い、引数内のバックスラッシュ記号とドル記号を適切にエスケープします。バージョン 2.6 で非推奨: この関数は明らかでないですし役立たずです。名前も
getstatusoutput()
の前では誤解を招くものです。
例:
>>> import commands
>>> commands.getstatusoutput('ls /bin/ls')
(0, '/bin/ls')
>>> commands.getstatusoutput('cat /bin/junk')
(256, 'cat: /bin/junk: No such file or directory')
>>> commands.getstatusoutput('/bin/junk')
(256, 'sh: /bin/junk: not found')
>>> commands.getoutput('ls /bin/ls')
'/bin/ls'
>>> commands.getstatus('/bin/ls')
'-rwxr-xr-x 1 root 13352 Oct 14 1994 /bin/ls'
参考
subprocess
モジュールサブプロセスの生成と管理のためのモジュール。