Pythonで外部コマンドを実行するためのモジュールには、os.systemsubprocessがあります。これらの違いと使い方について解説します。

os.systemとは

os.systemは、PythonでUnixコマンドを記述するための従来のモジュールです。以下にos.systemを使って現在のディレクトリの中身を確認する例を示します。

import os
os.system("ls")

subprocessとは

subprocessは、os.systemos.spawn*といったモジュールや関数を置き換えることを目的にしたモジュールです。以下にsubprocessを使って同じことを行う例を示します。

import subprocess
subprocess.call("ls")

subprocessの使い方

subprocessにはいくつかの関数があり、それぞれ異なる目的で使用されます。

subprocess.call()

subprocess.call()は、シンプルにただコマンドを実行したい時に使います。

import subprocess
subprocess.call("ls")

subprocess.check_call()

subprocess.check_call()は、コマンドが正常に実行できたかどうか確認し、処理を分岐させたい場合に使います。

import subprocess
try:
    subprocess.check_call("ls")
except:
    print("subprocess.check_call() failed")

subprocess.check_output()

subprocess.check_output()は、コマンドを実行した際の出力を返します。

import subprocess
print(subprocess.check_output("ls"))

まとめ

os.systemsubprocessの主な違いは、subprocessがより新しく、より多くの機能を提供していることです。そのため、現在ではsubprocessの使用が推奨されています。特に、subprocess.run()は、可能な範囲で全てを任せることが推奨されています。それより複雑な処理が求められる場合は、subprocess.Popen()を使用します。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です