プログラムを実行する際、毎回コードを書き換えるのではなく、外部から情報(引数)を渡したい場合があります。このときに使うのが「コマンドライン引数」です。コマンドライン引数を使うことで、プログラムの柔軟性が高まり、再利用しやすくなります。
コマンドライン引数とは?
コマンドライン引数とは、プログラムをターミナルやコマンドプロンプトで実行する際に、実行コマンドの後ろにスペースを空けて渡す文字列のことです。
例えば、以下のようなコマンドを考えてみましょう。
python my_script.py input.txt output.txt
この場合、my_script.pyが実行されるプログラムで、input.txtとoutput.txtがコマンドライン引数です。プログラム側では、これらの文字列を読み取り、処理に利用できます。
Pythonでのコマンドライン引数の扱い方
Pythonでコマンドライン引数を扱うには、標準ライブラリのsysモジュールを使います。
sys.argvというリストの中に、コマンドライン引数が格納されています。
具体的な使用例
process_file.pyというファイルを作成し、引数として渡されたファイル名を表示するプログラムを書いてみましょう。
# ファイル名: process_file.py
import sys
# sys.argvリストの要素数を確認
if len(sys.argv) < 2:
print("使用方法: python process_file.py <ファイル名>")
else:
# 最初の引数(sys.argv[1])を取得
filename = sys.argv[1]
print(f"処理するファイル: {filename}")
このプログラムをターミナルで実行すると、以下のような結果になります。
$ python process_file.py data.csv
処理するファイル: data.csv
$ python process_file.py another_data.txt
処理するファイル: another_data.txt
なぜコマンドライン引数を使うのか?
-
柔軟性の向上:引数を変えるだけで、プログラムの振る舞いを変更できます。例えば、ソートの順番(昇順/降順)や出力先のファイル名を動的に指定できます。
-
再利用性の向上:一度作成したスクリプトを、様々なデータや設定に対して使い回すことができます。
まとめ
コマンドライン引数は、プログラムとユーザー(または他のプログラム)がコミュニケーションをとるための基本的な手段です。
-
sysモジュールのsys.argvリストを使って引数を取得する。 -
sys.argv[0]はスクリプト名、sys.argv[1]以降が引数。 -
引数を使うことで、プログラムをより汎用的で強力なツールにできる。
より複雑な引数(オプションやフラグ)を扱いたい場合は、argparseなどのライブラリを使うとさらに便利です。まずはsys.argvから始めて、その便利さを実感してみてください。