pythonの中にshellコマンドを実行できるやつ(subprocess)
5125 ワード
今回は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の応用
// 今の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フォルダが作られている
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ファイル一つでデータをダウンロードし、データを整形し、結果を出力してデータを削除するところまでを行える
Author And Source
この問題について(pythonの中にshellコマンドを実行できるやつ(subprocess)), 我々は、より多くの情報をここで見つけました https://qiita.com/T_programming/items/8b09564b68450664a7b5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .