Python PR

【Python】コマンドライン引数を使ってプログラム起動時に任意の値を渡す方法

記事内に商品プロモーションを含む場合があります

この記事では、Pythonのプログラムを起動する際に任意の値を渡すことができるコマンドライン引数の使い方について解説します。

コマンドライン引数は、プログラムが起動するときにコマンドラインからプログラムに渡される値のことを指します。 例えば以下のようにコマンドラインからPythonプログラムを起動した場合、value1value2がコマンドライン引数として main.py に渡されます。

$ python main.py value1 value2

コマンドライン引数を使うことでプログラム起動時のオプションなど作成することができます。

それでは、コマンドライン引数の使い方を見ていきましょう!

コマンドライン引数を渡す

コマンドライン引数を渡すには、ターミナルやコマンドプロンプトでプログラムを起動する際に、指定したPythonファイル名の後に渡したい値をスペース区切りで記述します。

python Pythonファイル名 値1 値2

以下のコードでは、hello100-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 ドキュメント

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ