- そもそもコマンドライン引数とは?
- Pythonでコマンドライン引数を使うには?
本記事ではこのような疑問を解決します。
Pythonにおいてファイル(モジュール)をコマンドラインから実行するときに、
「コマンド実行時に外から値をファイルの中へ渡せたらいいのにな・・・」って思う時があります。
そんな時に役立つのがコマンドライン引数です。
そこで今回はPythonでコマンドライン引数を使う方法を解説します。
コマンドライン引数とは?
コマンドライン引数とはコマンドライン上でプログラムを実行する時に指定する引数のことです。
例えば、日付を与えると曜日を返してくれるファイル(プログラム)があったとします。
このファイルを実行する時にファイル内で日付を指定するのではなく、実行するコマンドライン上から日付を渡せたら便利ですよね。
ちなみに、よく使うlsコマンドでの「$ ls -a」もコマンドライン引数を指定している例になります。
そして、コマンドライン引数には位置引数とオプショナル引数の2つがあります。
位置引数は指定必須の引数で、
オプショナル引数はハイフン(-)を用いてオプション値を指定する引数です。
これら2つについては後ほど詳しく解説します。
Pythonでコマンドライン引数を使う
Argparseを使う
Argparseはコマンドライン引数を扱うためのPythonの標準ライブラリです。
標準ライブラリであるため外部からインストールは不要です。
なお、公式ドキュメントはこちらになります。
Argparseチュートリアル
基本形
まずはArgparseを使う時の基本形を見てみましょう。
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('object1')
parser.add_argument('object2')
args = parser.parse_args()
print(args.object1)
print(args.object2)
コマンドラインから実行すると以下のようになります。
$ python sample.py aaa bbb
=> aaa
=> bbb
add_argumentメソッド
add_argumentメソッドはプログラムがどんなコマンドライン引数を受け付けるか指定するためのものです。
第一引数には位置引数かオプショナル引数のどちらかを指定する必要があります。
位置引数かオプショナル引数かの判別は先頭にハイフン(-)があるかないかです。
また、第二引数には第一引数(位置引数orオプショナル引数)をどのように扱うか指定できます。(任意)
ちなみに、第二引数に指定する項目をいくつかピックアップすると以下の通りです。
・type→型の指定
・nargs→受け取る引数の数を指定
・choices→受け取る引数を選択肢で指定(リストで指定する)
・help→説明文えお指定(どのような引数を指定すれば良いかの説明)
なお、他の項目についてはこちらをご確認ください。
add_argumentメソッド
位置引数
位置引数は指定必須の引数で、指定せずにコマンドを実行するとエラーが起こります。
なお、基本形のところで見たものは位置引数を指定して実行したものになります。
オプショナル引数
オプショナル引数はハイフン(-)を用いてオプション値を指定する引数になります。
わかりやすく言うと、関数におけるキーワード引数みたいなものです。
また、指定しなければNoneが返されます。
import argparse
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-o', '--object')# 第一引数:省略名, 第二引数:正式名
args = parser.parse_args()
print(args.object)
$ python sample.py -t aaa
=> aaa
※もちろん「$ python sample.py --text aaa
」でもOK
まとめ
以上がPythonでコマンドライン引数を使う方法になります。
ファイル(モジュール)をコマンドから実行する時に外から値を与えてあげられるのはとても便利ですよね。
コマンドライン引数には指定必須の位置引数と、
キーワード引数のように使うオプショナル引数の2つがあります。
ファイルをコマンドラインから直接実行する際にはぜひ活用してみてください。
実務1年未満でもOK!フリーランスエンジニアの案件獲得方法はこちら!
フリーランスエンジニアが案件獲得方法とは?自ら営業せずに案件を獲得するには?実務経験1年未満でも大丈夫なの? 本記事ではこのような疑問を解決します。これからフリーランスエンジニアとして独立したい方は、兎にも角にも案件の獲得が急務です[…]