LoginSignup
0
1

#0021 pythonからコマンド実行

Posted at

はじめに

  • pythonからコマンド実行したいときのsubprocessモジュールについて書きます。

subprocessモジュールの使い方

  • subprocessモジュールを使えば、pythonからコマンドを実行できます。
  • https://docs.python.org/3/library/subprocess.html
  • subprocess.run([<実行したいコマンド>]でpythonからコマンドを実行できます。
  • コマンドは複数の場合は配列で渡します。
環境:Python 3.11.4

import subprocess

>>> subprocess.run(["ls", "-l", ""])
total 16
total 16
drwx------@   3 xxxx  staff    96B  9  6  2021 Applications
drwx------@  32 xxxx  staff   1.0K  8  6 08:52 Desktop
drwx------+   4 xxxx  staff   128B 10 11  2022 Documents
drwx------@ 163 xxxx  staff   5.1K  9  3 21:26 Downloads
drwx------    7 xxxx  staff   224B  3 18  2022 Movies
drwx------+   5 xxxx  staff   160B  7 19  2022 Music
drwx------+  13 xxxx  staff   416B  8 17 19:33 Pictures
...

結果の取得

  • 結果を取得するにはrun()の引数にcapture_output=Trueを入れます。
  • 結果の属性は以下です。
    • arges
    • returncode
    • stdout
    • stderr
  • また、結果はバイナリ形式のため、文字列にするにはrun()の引数にtext=Trueを入れます。
>>> res = subprocess.run("ls", capture_output=True, text=True)

>>> print(res.stdout)
Applications
Desktop
Documents
Downloads
Movies
Music
...

shell実行

  • run()の引数にshell=Trueを入れればshell実行ができ、shellの機能使えます。
  • パイプやワイルドカードを利用できます。
>>> subprocess.run("ls | grep Do", shell=True)
Documents
Downloads
CompletedProcess(args='ls | grep Do', returncode=0)

終わりに

  • subprocessを学んでから、pythonでコマンド実行できると思い、unzipをsubprocessで書いたら、「pythonに標準モジュールがある」と指摘されました。
  • まだまだ勉強不足です。
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1