夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

コマンドラインから引数を指定して実行可能なPythonを書く

本日はPython枠です。

GUIを使わない自作のPythonコードはエディタ上で実行するほかコマンドラインを使用して実行することが一般的です。

python 〇〇.py

この場合変数を変えたい場合にエディタで開いて内部の変数を直接いじる必要があるなど扱ううえで問題となることがあります。

今回はコマンドラインからPythonを実行する際に引数を含ませられるようにしていきます。

〇環境

・Windows11

・Anaconda Prompt(Anaconda3)

〇引数を指定して実行する

import sys

def main():
    # コマンドライン引数を取得
    arguments = sys.argv[1:]

    # 引数がない場合の処理
    if not arguments:
        print("引数がありません。")
        return

    # 引数を表示
    print("指定された引数:", arguments)

if __name__ == "__main__":
    main()

①Anacondaでcdコマンドを使用しスクリプトの階層へ入ります。

 cd ○○

pythonを実行する際に引数を与えます。

pyrhon scripts.py ○○

これによって引数がログとして返されていることが確認できます。

指定された引数: ['testmessage']

以上で引数を指定して実行できました。

〇解説

今回はPythonのデフォルトのモジュールであるsysを使用しています。

これはPythonの情報などが格納されているモジュールもありますが、今回のようなコマンドライン上で使用できるユーティリティ機能を提供しています。

sys.argvコマンドラインPythonを実行する際に引数を配列として格納します。

配列が[1:]となっているのはsys.argv[0]がスクリプト名となるためそれ以降の文字列を格納したいためで1以降のデータで格納しているためです。

引数を内部で処理するためには次のような実装ができます。

次の例では引数を数値として2つを足し合わせた結果が返されるようになります。

import sys


def main():
    # コマンドライン引数を取得
    arguments = sys.argv[1:]

    # 引数がない場合の処理
    if not arguments:
        print("引数がありません。")
        return
    test_function(sys.argv[1],sys.argv[2])
    # 引数を表示
    print("指定された引数:", arguments[1])

def test_function(number1 ,number2):
    result = int(number1) + int(number2)
    print("計算結果",result)
    return
    
if __name__ == "__main__":
    main()

以上でコマンドラインから引数を指定して実行可能なPythonの実装になります。

〇参考

office54.net