ここからPythonプログラミングの現実的な構築の分野に入ります。
これまで、Pythonのプログラムをターミナルのコマンドラインで実行する際には、実行するPythonファイル名のみを指定してきました。
このファイル名の後に文字列を新たに追加することによって、プログラムに情報を渡すことができます。
これをコマンドライン引数といいます。
コマンドライン引数は、実行ごとにプログラムの動作を変更したいときに使います。
ここではコマンドライン引数について見ていこうと思います。
コマンドライン引数
Pythonのコードをターミナルで実行する場合、pythonと入力した後にファイル名を入力して実行します。
簡単なコードで確認してみましょう。
print("コマンドライン引数の勉強をします")
このコードをcommandline.pyというファイル名でターミナルで実行します。(Atomのターミナルで実行しています)
ファイルのあるディレクトリでpythonファイルを実行しているのがわかります。
ではコマンドライン引数をやってみましょう。
今度はこのファイルを実行する時に、ファイル名の後ろに何かを付け加えて実行してみます。(これをコマンドライン引数といいます)
例えば、同じファイルを次のようなコマンドで実行してみましょう。
$ python commandline.py "Hello" "Python"
実行ファイルの後ろに、引数が2つ付け加えられています。
でも、結果はこれまでと変わりません。
ここで、コードを次のように変更してみます。
システムモジュールをインポートするという操作をするのですが、このインポートに関しては次の投稿で扱うので、他の機能を使うのにこういう方法があるとだけ頭に入れておきましょう。
import sys
print("コマンドライン引数を学習中!")
print(sys.argv)
引数にアクセスする為にsysというモジュールをインポートして、print()関数でargvを出力するコードを加えています。argvとはargument vector(引数の配列)の意味です。
同様の引数を使って実行してみましょう。
コマンドラインに入力したものが、リスト化されて表示されているのがわかります。
これを利用して、実行時に情報を与えることで動作を変更させるわけです。
import sys
print("コマンドライン引数を学習中!")
print(sys.argv)
print(sys.argv[0])
print(sys.argv[1])
print(sys.argv[2])
このように1つずつリストのインデックスから取り出して表示させたりできます。
また、for文を使って次のように反復処理で取り出すこともできます。
import sys
print("コマンドライン引数を学習中!")
print(sys.argv)
for i in sys.argv:
print(i)
同じ引数を利用して実行するとこうなります。
1つずつ取り出させているのがわかります。
このコマンドライン引数をいろいろ変えてやってみましょう。プログラミングの中のコードを触らなくても、この引数を変えることで実行時の違いを見ることができます。
まとめ
Pythonのプログラムをターミナルのコマンドラインで実行する際に、実行するPythonファイル名の後に文字列を新たに追加することによって、プログラムに情報を渡すことができます。これをコマンドライン引数といいます。
コマンドライン引数は、実行ごとにプログラムの動作を変更したいときに使います。
コマンドラインにスペースを入れて、引数を加えて行きます。
引数にアクセスするには、sysモジュールをインポートして、リストとして扱います。