【Pythonコラム】Pythonのsys.argv:コマンドライン引数を使いこなすための入門




Pythonのsys.argv:コマンドライン引数を使いこなすための入門

Pythonを学んでいる皆さん、こんにちは! 今回は、Pythonプログラムをより柔軟に、そしてパワフルにするための重要なツール、「sys.argv」について解説します。

sys.argvって何?

sys.argvは、Pythonプログラムが起動された際に、コマンドラインから与えられた引数を格納するリストです。コマンドライン引数とは、ターミナル(コマンドプロンプト)でプログラムを実行する際に、プログラム名の後に続けて記述する値のことです。

例えば、python my_script.py hello world というコマンドを実行した場合、my_script.pyがプログラム名で、helloworldがコマンドライン引数となります。

sys.argvは、sysモジュールに含まれている変数なので、使うためにはまずimport sysする必要があります。

import sys

print(sys.argv)

このコードを実行すると、ターミナルに以下のようなリストが表示されるはずです。

['my_script.py', 'hello', 'world']

リストの最初の要素(インデックス0)は、常に実行されたPythonスクリプトの名前(my_script.py)です。2番目以降の要素が、コマンドラインから与えられた引数(helloworld)となります。

sys.argvの使い方:簡単な例

具体的な使い方を見てみましょう。例えば、コマンドラインから与えられた名前を受け取り、挨拶を表示するプログラムを作ってみましょう。

import sys

if len(sys.argv) > 1:
    name = sys.argv[1]
    print(f"こんにちは、{name}さん!")
else:
    print("名前を入力してください。例:python greeting.py 太郎")

このプログラムを greeting.py という名前で保存し、ターミナルで python greeting.py 太郎 と実行すると、こんにちは、太郎さん! と表示されます。

プログラムの仕組みはこうです。

  1. import syssys モジュールをインポートします。
  2. len(sys.argv) > 1 で、コマンドライン引数が存在するかどうかを確認します。もし引数が一つもなければ、sys.argv はスクリプト名だけを含むリストなので、長さは1になります。
  3. もし引数があれば、sys.argv[1] で最初の引数(この場合は名前)を取り出し、変数 name に代入します。
  4. 最後に、f-string を使って、挨拶のメッセージを表示します。

もし引数がなかった場合、else ブロックが実行され、名前を入力するように促すメッセージが表示されます。

sys.argvの注意点

  • 型は常に文字列: sys.argvの要素は、常に文字列として扱われます。もし数値として扱いたい場合は、int()float() などを使って型変換する必要があります。

    import sys
    
    if len(sys.argv) > 1:
        try:
            number = int(sys.argv[1])
            print(f"入力された数値は:{number}")
        except ValueError:
            print("数値として入力してください")
    else:
        print("数値を入力してください。")
    
  • IndexError: sys.argv に存在しないインデックスにアクセスしようとすると IndexError が発生します。必ず len(sys.argv) を使って引数の数をチェックし、範囲内のインデックスにアクセスするようにしましょう。

  • エラー処理: ユーザーが予期しない値を入力する可能性を考慮して、エラー処理を適切に行うことが重要です。try-except ブロックなどを使って、プログラムがクラッシュしないようにしましょう。

sys.argvの応用

sys.argvを使うことで、様々な応用が可能です。

  • 設定ファイルのパスを指定する: プログラムが設定ファイルを読み込む際に、コマンドライン引数で設定ファイルのパスを指定することができます。
  • 処理モードを切り替える: コマンドライン引数によって、プログラムの動作モードを切り替えることができます。例えば、-v オプションで詳細なログを出力する、-d オプションでデバッグモードにするなど。
  • 複数のファイルを処理する: コマンドライン引数で複数のファイル名を指定し、それらのファイルをまとめて処理することができます。

まとめ

sys.argvは、Pythonプログラムをより柔軟に、対話的にするための強力なツールです。最初は少し難しく感じるかもしれませんが、実際にコードを書いて試してみることで、すぐに理解できるはずです。ぜひ、色々なプログラムでsys.argvを活用してみてください。あなたのPythonスキルが一段と向上することでしょう!



< Pip
コラム一覧に戻る
データ型 >

レッスン概要

◯月額4,000円で質問し放題!!
◯完全オンライン
◯翌日までには必ず返信
◯挫折しない独自の学習メソッド
◯圧倒的高評価!!
◯テキストベースで時間を選ばない
◯高品質なサンプルコード
詳細はこちら
興味がある方はまず質問だけでもどうぞ!