4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Posted at

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

subprocess

それはsubprocessというライブラリです。一般的に下のようにインポートします
# ライブラリのインポート
import subprocess as sp
sp.call("ここにshellのコマンド",shell=True)

実行例

```php // 今の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フォルダが作られている


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

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


```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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?