🍣

【Python】引数によって処理を変えるコードを紹介

に公開

概要

Pythonで指定した引数によって処理を変えるコードを紹介

サンプルコード


import sys

def process_args(args):
    """
    引数に応じて処理を変える。
    :param args: コマンドライン引数のリスト
    """
    if len(args) == 0:
        print("引数が指定されていません。")
    elif args[0] == "start":
        print("処理を開始します。")
    elif args[0] == "stop":
        print("処理を停止します。")
    elif args[0] == "status":
        print("現在のステータスを表示します。")
    else:
        print(f"不明な引数: {args[0]}")

if __name__ == "__main__":
    # コマンドライン引数を取得(スクリプト名を除く)
    process_args(sys.argv[1:])

実行例

$ python arg_test.py 
引数が指定されていません。
$ python arg_test.py start
処理を開始します。
$ python arg_test.py stop 
処理を停止します。
$ python arg_test.py status
現在のステータスを表示します。
$ 

利用例

引数1では sample.log 作成
引数2では xxxxのサービスを停止
引数3では xxxxのサービスを開始など

📌 補足

🐚 Shellスクリプトでも同様のことが可能です。
実は別の記事で、Shellで引数によって処理を分岐する方法も紹介しています👇
👉 Shellスクリプト版はこちら

📕 追記(引数が複数あるときのパターン)

## Python
## 引数関連
## 取得した引数に応じて処理を変える

import sys

def process_args(args):
    """
    引数に応じて処理を変える。
    :param args: コマンドライン引数のリスト
    """
    if len(args) == 0:
        print("引数が指定されていません。")
    elif args[0] == "start":
        print("処理を開始します。")
    elif args[0] == "stop":
        print("処理を停止します。")
    elif args[0] == "status":
        print("現在のステータスを表示します。")
    elif len(args) == 2:
        if args[0] == "add" and args[1].isdigit():
            print(f"数値 {args[1]} を追加します。")
        elif args[0] == "delete" and args[1].isdigit():
            print(f"数値 {args[1]} を削除します。")
        else:
            print(f"不明な引数の組み合わせ: {args[0]} {args[1]}")
    else:
        print(f"不明な引数: {args[0]}")

if __name__ == "__main__":
    # コマンドライン引数を取得(スクリプト名を除く)
    process_args(sys.argv[1:])

実行例

$ python arg_test.py add 10
数値 10 を追加します。
$ python arg_test.py delete 50
数値 50 を削除します。
$ 
$ python arg_test.py delete cat
不明な引数の組み合わせ: delete cat
$ 

📌 補足 isdigit()

・isdigit() は、文字列が数字のみで構成されているかを判定するメソッド
以下のように動作

戻り値: 文字列が数字のみで構成されている場合は True、それ以外の場合は False

print("123".isdigit())  # True: 数字のみ
print("abc".isdigit())  # False: 英字が含まれる
print("123abc".isdigit())  # False: 数字と英字が混在
print("".isdigit())  # False: 空文字列

Discussion