LoginSignup
4
3

More than 1 year has passed since last update.

pythonの中にshellコマンドを実行できるやつ(subprocess)

Posted at

今回はpythonの中にshellコマンドを実行できるライブラリと、それのよく使うやり方。またそれを使ってできる技など、丁寧に紹介します。

subprocess

それはsubprocessというライブラリです。一般的に下のようにインポートします

# ライブラリのインポート
import subprocess as sp
sp.call("ここにshellのコマンド",shell=True)

実行例

// 今のsubprocessディレクトリにはtestフォルダとsub.pyが入っている
subprocess % ls
#     sub.py      test/

//sub.pyの中身
subprocess % cat sub.py
#  import subprocess as sp
#  sp.call("midir test2",shell=True)

// sub.py 実行
subprocess % python sub.py

// 確認
subprocess % ls
#   sub.py  test/   test2/

## test2フォルダが作られている

subprocessの応用

google corabやpipyに登録するpythonファイルなど、ローカルpcと繋げない時に用いる。 また、データだけ撮ってきて、最後にそのファイルを消したい時も使える。

この気象省の2020年の気象データをsubprocessからダウンロード
http://www.data.jma.go.jp/obd/stats/etrn/index.php

subprocess % cat sub2.py 
import subprocess as sp
sp.call("wget http://www.data.jma.go.jp/obd/stats/etrn/index.php?prec_no=&block_no=&year=2020",shell=True)

// python実行 wgetが実行された
subprocess % python sub2.py
#--2021-11-13 13:05:47--  http://www.data.jma.go.jp/obd/stats/etrn/index.php?prec_no=
#www.data.jma.go.jp (www.data.jma.go.jp) をDNSに問いあわせています... 104.71.166.219
#www.data.jma.go.jp (www.data.jma.go.jp)|104.71.166.219|:80 に接続しています... 接続しました。
#HTTP による接続要求を送信しました、応答を待っています... 200 OK
#長さ: 23860 (23K) [text/html]
#`index.php?prec_no=' に保存中

#index.php?prec_no=  100%[===================>]  23.30K   123KB/s 時間 0.2s     

#2021-11-13 13:05:49 (123 KB/s) - `index.php?prec_no=' へ保存完了 [23860/23860]

ファイル削除

// 確認
subprocess % ls
#  index.php?prec_no=   sub2.py         test/
#  sub.py           sub3.py         test2/

subprocess % cat sub3.py
import subprocess as sp
sp.call("rm index.php?prec_no=",shell=True)

// 
subprocess % python sub3.py
subprocess % ls
#  sub2.py         test/
#  sub.py          sub3.py         test2/

まとめ

subprocessを用いればpythonファイル一つでデータをダウンロードし、データを整形し、結果を出力してデータを削除するところまでを行える

4
3
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
4
3