Python学習【365日チャレンジ!】137日目のマスターU(@Udemy11)です。
今日は寒天を作ったのですが、指定されている水の量を倍にしてしまったので、しっかり固まらずにぷるんぷるんのわらび餅みたいになってしまいました。
わらび餅みたいだったので、きなこをかけると美味しいんじゃないかとおもって使ってみたところ、これまためっちゃ美味しくて、思わず食べすぎて後悔しています。
ほんと太るのって簡単なんですけど、痩せるのは難しいですよね。
それでは今日もPython学習を頑張りましょう!
昨日の復習
昨日は、コマンドライン引数について学習しました。
sys
モジュールを使って、リスト型変数のsys.argv
にコマンドラインから引数を渡すことができました。
実行ファイルの名前を第1引数で渡すことや数字も文字列の値にするので、コードで利用するには、整形が必要でした。
詳細は、昨日の記事をごらんください。
今日は、コマンドライン引数をもっと便利に使う方法を学習しましょう。
ArgumentParser
ArgumentParser
は、昨日学習したコマンドライン引数をPythonの実行時にいろいろな形で受け取ることができるオブジェクトで、argparse
をインポートして使用します。
受け取ることができる引数のオプションはたくさんあるので、一度Python公式ドキュメントをご覧になってみてください。
私が現在学習中の酒井さんの講座では、argparse
ではなく、optparse
の解説がありました。
公式のアナウンスによるとoptparse
は廃止予定とのことなので、公式ドキュメントのArgparse チュートリアルを参考にしながらargparse(ArgumentParser)
を学習しました。
argparseを使う
Pythonistaでできないのかと思って調べてみるとargparse
モジュールは標準ライブラリで、コマンドもStaShを使えばできそうなので、Pythonistaで実行してみました。
Pythonistaでコマンド入力ができるStaShのインストールについてはこのあたりの記事が参考になるかと思います。
それでは、argparse
を使ってみましょう。
day0626.py
from argparse import ArgumentParser
parser = ArgumentParser()
parser.parse_args()
実行コマンド
python3 day0626.py --help
出力結果
usage: day0626.py [-h]
optional arguments:
-h, --help show this help message and exit
Pythonistaでコマンドを使うときは、StaShの実行ファイルである【launch_stash.py】を実行したあと、cd
コマンドで【day0626.py】が保存されているディレクトリに移動してからコマンドを実行します。
ちなみに、PythonistaのStaShでPythonを実行するときは、3
を付ける必要があります。
私の場合は【Mypython】ディレクトリにファイルを保存しているので、StaShを使っている状態は次のような感じになります。
実行ファイルはparser
オブジェクトを作って、parse_args
メソッドを実行しています。
parse_args
メソッドの実行により、--help
が返されて、help
関数で表示される__doc__
のような説明が表示されます。
出力結果については、usage
が【使用法】という意味なので、【day0626.py】の-h
の使い方、optional arguments
は、-h
か--help
で、このヘルプメッセージを表示して終了しますということを表示しています。
なので、コマンド入力の最後を--help
から-h
に変えても同じ結果が表示されます。
引数を加える
コマンド入力から受け取れる引数を加えてみましょう。
day0626.py
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument('item', help='item is string you use here')
args = parser.parse_args()
print(args.item)
実行コマンド
python3 day0626.py -h
出力結果
usage: day0626.py [-h]
positional arguments:
item item is string you use here
optional arguments:
-h, --help show this help message and exit
ヘルプを表示すると、posithonal arguments(位置引数)
が付け加えられています。
これは、4行目のadd.argument
によって、位置引数を加えたからですが、引数に値を入れるとどうなるでしょう
実行コマンド
python3 day0626.py something
出力結果
something
6行目のprint(args.item)
によって、引数の値が表示されます。
引数で計算
次に、引数に数字を入れて計算をさせてみましょう。
day0626.py
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument('cube',
help="show a cube of a given number",
type=int)
args = parser.parse_args()
print(args.cube**3)
実行コマンド
python3 day0626.py 3
出力結果
27
add_argument
で追加する引数は、デフォルトでstring
型となるため、6行目でタイプをinteger
に指定しています。
そして、実行ファイルの最後の行で、受け取った引数の3乗を表示しています。
出力結果は、3の3乗である27
になります。
コマンド入力の引数を-h
にすると、位置引数が次のように追加されています。
positional arguments:
cube show a cub of a given number
Optional引数を追加
次にOptional引数を追加してみます。
day0626.py
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument('cube',
help="show a cube of a given number",
type=int)
parser.add_argument("-v", "--verbose",
action="store_true",
help="increase output verbosity")
args = parser.parse_args()
result = args.cube**3
if args.verbose:
print('cube of {} is {}'.format(args.cube, result))
else:
print(result)
実行コマンド
python3 day0626.py 2 -v
出力結果
cube of 2 is 8
7行目で、Optional引数として-verbose
と省略した-v
を指定しています。
help
についてはこれまで一緒ですが、新しくaction=store_true
を追加しています。
これはコマンド入力にOptional引数が指定されることでargs.verbose
にTrue
を返すためで、Optional引数が指定されていなければ、False
が返されるので、出力結果は8
になります。
他にも機能があるけれど
ここまでArgumentParserを学習してきましたが、他にもいろいろな使い方がありますが、より詳しいことはPython公式ドキュメントを参考にしてみてください。
今回Arguparseチュートリアルを元に学習してきましたが、公式ドキュメントやチュートリアルを隅から隅までコンプリートしようと思うと莫大な時間がかかる割に、どんどん忘れていってしまうので、ものすごく効率が悪くなります。
なので、必要になった時に活用するようにしたほうが効率よくやりたいことができるようになります。
公式ドキュメントやチュートリアルは、あくまで辞書的な役割として活用したほうがいいでしょう。
ここまでで酒井さんの講座セクション11まで終了しました。
290レクチャーあるうちの134レクチャーなので、まだ半分も終了していませんが、最初に比べるとかなりPythonのコードが理解できるようになってきました。
今回のArgumentParserについても理解するまでにかなり時間がかかりましたが、ほんと
塵も積もればヤマトなる?!
とはこのことですね。
明日からも、コツコツと積み上げていこうと思います。
それでは明日もGood Python!