Udemy講座 Pythonista コマンドライン引数

Python学習【365日チャレンジ!】136日目のマスターU(@Udemy11)です。

近所の田んぼも田植えから結構日数が経って、水を抜いたりしているせいか、たまにカエルの鳴き声が気にならない夜があるんですよね。

もしかしたら、人間にはないカエルの発情期のピークが過ぎたのかもしれませんね。

それでは、今日もPython学習を始めましょう。

昨日の復習

昨日は、virtualenvを使ってバージョンの違うPythonを使い分ける方法について学習しました。

PythonistaよりもPycharmでやるほうがスムーズにできそうだったので、Pycharmにvirtualenvをインストールして試してみました。

同じPythonファイルでもPython2とPython3ではコードの記述ルールが違うので、開発環境を切り替える必要があり、要求されるPython環境で開発するためには、仮想環境を作ることができるvirtualenvは必須のライブラリです。

詳しい内容は昨日の記事を参考にしてください。

それでは、今日の学習に入りましょう。

コマンドライン引数

コマンドライン引数は、ターミナルのコマンドでPythonファイルを実行する時に渡すことができる引数です。

ターミナルから【lesson.py】という名前のPythonファイルを実行する場合は、次のようにコマンドを実行します。

python lesson.py

この【lesson.py】の中身がprint("Hello World")だったら、結果は【Hello World】と表示されます。

この【lesson.py】にコマンドから引数を渡すことができるのがコマンドライン引数です。

sysモジュール

コマンドライン引数をPythonファイルに渡すにはコマンドライン引数を受け取ることができるモジュールをインポートする必要があります。

そのモジュールがsysで、このモジュールをインポートすれば、コマンドライン引数はsys.argvというリスト型変数に値が渡されます。

コマンドライン引数の使い方

コマンドライン引数を受け取ったsys.argvは、他のリスト型変数と同様の使い方ができます。

lesson.py

import sys

print(sys.argv)

for i in sys.argv:
    print(i)
    print(type(i))

このlesson.pyをターミナルで次のようなコマンドで実行するとどうなるでしょうか?

python lesson.py arg1 arg2 100

実行ファイルのあとに続けて引数を3つ記述しました。

出力結果は次のようになります。

['lesson.py', 'arg1', 'arg2', '100']
lesson.py
lesson.py

arg1

arg2

100

リスト変数sys.argvの値が表示されて、そのsys.argvリストをforループで回しているので、値とタイプを一つずつ表示しています。

この場合の引数は、実行ファイル名のlesson.pyもリストに含まれ、数字で入れた引数でもintではなくstrになっているところに注意が必要です。

整形が必要

コマンドライン引数は、実行ファイルのあとに続けて記述すれば、簡単に使うことができますが、第1引数にファイル名が含まれるので、受け取ったリストを整形しないと使うことができません。

使いみちがわからない

今のところ、どんな使い方ができるのか想像することができません。

実際にどのような場面で使われるのかがわからないと記憶に留めることは難しいので、こんなのあったな〜くらいの感覚で憶えておいてもいいような気がします。

ということで今日はこのへんで。

それでは明日も、Good Python!