値を入力してからプログラムを起動する(コマンドライン引数をプログラムの中で使う)


概要


import sys

でsysモジュールをインポートした後

sys.argv

というリストの中にファイル名と引数が入っている


import sys
print(sys.argv)

コマンドラインで引数を指定してプログラム起動するためのモジュール
sys.argvリストの中身を全て出力

出力


なし

説明


IDLEはボタン一つでプログラムを実行できます
Windowsのコマンドプロンプトやmacのターミナルを使うと
ファイル名をタイピング入力して実行できます。

面倒ですがこれには利点があり
たとえばキーワードを指定してグーグル検索をするプログラムを作ったとします
IDLEではプログラムの中身の特定の部分に検索キーワードを入れなければならず
どこにいれればいいか注意しないと
間違えた場所に入れるとプログラムが書き変わって動かなくなるかもしれません

コマンドプロンプトを使うと「python プログラム名 検索キーワード」のように実行できるので
元のプログラムを触らなくてもプログラムが実行でき、安全です。

また実行時にたくさんのキーワードを入れるときも便利です
IDLEではプログラムの中身を見てそのたくさんのキーワードを入れなければならず
大変なうえに間違えると動かなくなって困ります

windowsのコマンドプロンプトやmacのターミナルでpythonファイルを実行する時

python ファイル名 1 2 3

のようにして引数1と2と3を指定して実行でき
sys.argvの中身はリストで「ファイル名,引数1,引数2,引数3…」となる。
例えばファイル名がtest.pyで

python test.py 1 2 3

で実行すると

print(sys.argv)は['test.py','1','2','3']と出る
ファイル名は名前そのまま出てくる。フルパスで出てこない

間違えやすい問題


1.引数は全て文字列として入るので、例えば引数を1と2にして

print(sys.argv[1] + sys.argv[2]) とすると、print出力は12になる 足し算をさせるには int(sys.argv[1]) + int(sys.argv[2]) のように整数に変換しなければならない。

2.引数は半角スペースで区切る。カンマではない

誤 python test.py 1,2,3 正 python test.py 1 2 3