この記事では、Pythonのプログラムを起動する際に任意の値を渡すことができるコマンドライン引数の使い方について解説します。
コマンドライン引数は、プログラムが起動するときにコマンドラインからプログラムに渡される値のことを指します。 例えば以下のようにコマンドラインからPythonプログラムを起動した場合、value1
とvalue2
がコマンドライン引数として main.py に渡されます。
$ python main.py value1 value2
コマンドライン引数を使うことでプログラム起動時のオプションなど作成することができます。
それでは、コマンドライン引数の使い方を見ていきましょう!
コマンドライン引数を渡す
コマンドライン引数を渡すには、ターミナルやコマンドプロンプトでプログラムを起動する際に、指定したPythonファイル名の後に渡したい値をスペース区切りで記述します。
python Pythonファイル名 値1 値2
以下のコードでは、hello
、100
、-option
という3つのコマンドライン引数を渡しています。
python script.py hello 100 -option
コマンドライン引数で渡される値は必ず文字列型(str型)として渡されます。 先ほど渡した100
も文字列として渡されているので注意してください。
また、オプションとして定義されているコマンドを指定するとそのオプションが適用されてしまいます。予期せぬオプションを実行してしまわないようにコマンドを知っておく必要があります。
以下のリンクに用意されているオプションが掲載されているので確認しておいてください。
外部リンクコマンドラインと環境 — Python ドキュメント
これでプログラム実行時にコマンドライン引数を渡す方法がわかったので、次に渡されたコマンド引数をソースコード内から参照する方法を見ていきましょう。
コマンドライン引数を参照する
コマンドライン引数は、sys
モジュールのargv
リストから簡単に参照することができます。sys
モジュールは、標準ライブラリなのでインポートするだけで使用可能です。
import sys
sys.argv
sys.argv
には、以下のように値が格納されています。
argv[0] | スクリプト名。フルパス名かどうかはOSによって異なる。 |
---|---|
argv[1]以降 | コマンドライン引数 |
例として実際にコマンドライン引数をソースコード内から参照し、出力してみます。以下のコードでは、for文を用いて受け取ったコマンドライン引数を1つずつ出力しています。
main.py
import sys
for i, arg in enumerate(sys.argv):
print(f'argv[{i}]: {arg}')
上記プログラムをターミナルから起動します。その際、コマンドライン引数をいくつか渡します。
ターミナルやコマンドプロンプトから実行
$ python main.py abc 123 -option
argv[0]: /Users/user/Desktop/Python/main.py
argv[1]: abc
argv[2]: 123
argv[3]: -option
スクリプト名と受け取ったコマンドライン引数を出力することができました。
まとめ
この記事では、Pythonのコマンドライン引数の受け渡し方法を解説しました。
コマンドライン引数を使うことでプログラム起動時のオプションなどを実装することができます。その際は、コマンドライン引数(sys.argv
)を解析するargparse
モジュールを使用することでより複雑な処理を簡単なコードで実装することができます。
外部リンクArgparse チュートリアル — Python ドキュメント
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ