今回は,よく登場する「sys.argv」とは何なのか,またその使用例も交えて紹介していきます.
sys.argvとは
コマンドラインでPythonを実行する際にコマンドライン引数を扱えるようにするものです.
例えば,test.pyというファイルを実行する際,下記の様な引数を指定することを考えます.
python test.py -m arg1 arg2
ここで指定されたtest1.py,-m,arg1,arg2がリスト形式で,sys.argvに格納されます.ここで少し注意点があります.引数だけでなく,指定したpythonファイル名(ここではtest1.py)もリストに格納されるということです.
sysのインポート
python
import sys
コマンドライン引数を取得
コマンドライン引数は,sys.argvで,リスト形式で取得できます.
test1.py
import sys
print(sys.argv)
コマンドラインからの実行
pyhon test1.py -m 12
出力
['test1.py', '-m', '12']
ちなみに,sys.argv[0]でリストの1番目(ここではファイル名)等の指定ができます.
与えられた引数のよって処理を変えることもできます.
pyhton
if len(sys.argv) == 1:
# 引数がない場合(要素数が1、ファイル名のみ)の処理
elif len(sys.argv) == 2 and sys.argv[1] == "hoge":
# 引数が1つかつその値が"hoge"だった場合の処理
else:
# ...
こういう感じでライブラリやOSSは作られているのですね.
ぱっと思いついたのは物体検知のYoloです.
Yoloを実行する際,
コマンドライン引数
python detect.py [どの重みを使うか] [どの形式の入力なのか] ...
等,たくさんの引数があります.これもsysで指定しているのですね.