コマンドラインパラメータを取得する
コマンドラインパラメータを取得するというのは、プログラムやスクリプトが実行される際に、ユーザーがコマンドライン(端末やコマンドプロンプトなどのテキストベースのインターフェース)を通じてプログラムに情報を渡すプロセスのことで、例えば以下のような記載となります。
python test_param.py 1
この場合のパラメータは起動するpythonファイルtest_pram.pyの後ろの「1」が該当します。パラメータを利用すると以下のようなメリットがあります。
これらの理由から、コマンドラインパラメータを使用して処理を行うことは柔軟性、再利用性、および効率性を高めるために非常に重要です。
パラメータを取得するサンプルコード
今回は取得したパラメータであいさつを変えるプログラムで説明します。以下ソースをVisual Studio Codeへコピーして、test_param.pyで保存してください。
import sys
def greet_message(arg):
"""
コマンドライン引数に基づいて挨拶を出力します。
引数:
arg (str): コマンドラインから受け取るパラメータ。'1' なら「こんにちは」、'2' なら「こんばんは」と出力します。
出力:
標準出力に挨拶のメッセージを表示します。
"""
if arg == '1':
print("こんにちは")
elif arg == '2':
print("こんばんは")
else:
print("無効な入力です。")
# コマンドライン引数をチェックし、適切な関数を呼び出します。
# 引数が足りない、または多すぎる場合はエラーメッセージを表示します。
if len(sys.argv) != 2:
print("使用法: python script.py <1または2>")
else:
greet_message(sys.argv[1])
以下のような画面となっていればOKです。
ターミナルへ以下のように入力します。
python test_param.py 1
以下のように「こんにちは」と出力されます。
27行目のsys.argv[1]
をgreet_message
関数へ引き渡しして「1」の処理を行っています。
パラメータを指定しなかったら?
ターミナルへ以下のように入力します。
python test_param.py
以下のように「使用法: python script.py <1または2>」を促されます。
これは24行目のif len(sys.argv) != 2:
で1つのパラメータしかないと判断されたためです。
パラメータ1つだからあっているのでは?となりますが。sys.argv
はコマンドライン引数を含むリストで、このリストの最初の要素 (sys.argv[0]
) は実行中のスクリプトのファイル名です。したがって、ユーザーがスクリプトに1つの引数を提供すると、sys.argv
リストの長さは2になります(スクリプトのファイル名とユーザーが設定した引数)。
パラメータを2つにしたサンプルコード
パラメータを2つにして、2つ目の文字列をつなげるように変更します。以下ソースをvs codeへコピーして、同じくtest_param.pyで保存してください。
import sys
def greet_message(arg1, arg2):
"""
コマンドライン引数に基づいて挨拶を出力します。
引数:
arg1 (str): '1' なら「こんにちは」、'2' なら「こんばんは」と出力します。
arg2 (str): 挨拶の後ろに結合される任意のメッセージ。
出力:
標準出力に挨拶のメッセージを表示します。
"""
msg = ""
if arg1 == '1':
msg = "こんにちは"
elif arg1 == '2':
msg = "こんばんは"
else:
print("無効な入力です。")
return
print(f"{msg}{arg2}")
# コマンドライン引数をチェックし、適切な関数を呼び出します。
# 引数が足りない、または多すぎる場合はエラーメッセージを表示します。
if len(sys.argv) != 3:
print("使用法: python script.py <1または2> <追加メッセージ>")
else:
greet_message(sys.argv[1], sys.argv[2])
ターミナルへ以下のように入力します。
1番目のパラメータが「1」で2番目のパラメータが「かめです。」となります。
python test_param.py 1 かめです。
結果は以下のように「こんにちはかめです。」と出力されます。
最後に
以上がパラメータを設定して動作させる例となります。前回説明したpyinstallerでexe作成した場合に本記事の内容が生きてくるとおもいます。
具体的なプロジェクトやニーズに応じて、パラメータを調整して使用してください。
コメント