-Python開発の第一歩!- その4 Pythonでパラメータを取得して実行する

Python開発の第一歩

コマンドラインパラメータを取得する

コマンドラインパラメータを取得するというのは、プログラムやスクリプトが実行される際に、ユーザーがコマンドライン(端末やコマンドプロンプトなどのテキストベースのインターフェース)を通じてプログラムに情報を渡すプロセスのことで、例えば以下のような記載となります。

python test_param.py 1

この場合のパラメータは起動するpythonファイルtest_pram.pyの後ろの「1」が該当します。パラメータを利用すると以下のようなメリットがあります。

パラメータを利用するメリット

自動化スクリプト: 自動化タスクやバッチ処理を実行するスクリプトでパラメータを使用することで、同じPythonファイルで異なる動きを実装できます。例えば10時に起動する処理と12時に起動する処理を分ける等です。

ウェブサービスの動的起動: ウェブサーバーやAPIサーバーを起動する際にポート番号や設定ファイルのパスをコマンドラインパラメータで指定することができます。これにより、同じサーバーコードを異なる設定で複数起動することが可能になります。

テストと本番環境: テスト環境と本番環境でログレベルの設定をコマンドラインパラメータ切替で行うことができます。これによりテスト環境と本番環境のソースを個別管理することなく開発プロセスが柔軟かつ効率的になります。

これらの理由から、コマンドラインパラメータを使用して処理を行うことは柔軟性、再利用性、および効率性を高めるために非常に重要です。

パラメータを取得するサンプルコード

今回は取得したパラメータであいさつを変えるプログラムで説明します。以下ソースを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作成した場合に本記事の内容が生きてくるとおもいます。

具体的なプロジェクトやニーズに応じて、パラメータを調整して使用してください。

コメント

タイトルとURLをコピーしました