Pythonでコマンドラインの実行を行う方法
Pythonでコマンドラインの実行を行う方法をご紹介します。
「subprocess」を使用します。
目次
条件
- Python 3.5以降
subprocessによるコマンド実行
run() 関数を使用します。
サンプルソース
「ls -l」を実行するサンプルです。
import subprocess subprocess.run(["ls", "-l"])
実行結果
$ python3 subprocessTest.py total 4 -rw-rw-r-- 1 user user 48 Dec 6 14:03 subprocessTest.py
Windowsで使用する場合(Linuxでも使える)
windowsの「dir」コマンドを使用する場合、シェルを通して実行する必要があります。
subprocess.run()に、「shell=True」というパラメタを渡します。
以下では、さらに2つのパラメタを追加しています。
- stdout=subprocess.PIPE:標準出力を取得する。
- universal_newlines=True:結果を文字列で返す。
import subprocess result = subprocess.run('dir *.py', shell=True, stdout=subprocess.PIPE, universal_newlines=True) for line in result.stdout.splitlines(): print(line)
関数化
関数化すると、より使いやすくなります。
以下では「stderr=subprocess.PIPE」というパラメタも追加して、エラー発生時の文字列を取得するようにしています。
import subprocess import sys def command(cmd): try: result = subprocess.run(cmd, shell=True, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) for line in result.stdout.splitlines(): yield line except subprocess.CalledProcessError: print('Command [' + cmd + '] was failed.', file=sys.stderr) sys.exit(1) def main(): """ main関数 """ cmd = 'dir *.py' # 実行するコマンド for result in command(cmd): print(result) if __name__ == "__main__": main()
参考
Python:subprocess — サブプロセス管理
https://docs.python.org/ja/3/library/subprocess.html
Python から外部プログラムを起動する (subprocess.run)
https://maku77.github.io/python/env/call-external-program.html
“Pythonでコマンドラインの実行を行う方法” に対して1件のコメントがあります。