本日は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の実装になります。