0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonでのコマンドライン引数処理 - `sys.argv` の使い方

Posted at

はじめに

Pythonスクリプトを実行する際に、コマンドライン引数を受け取ることができます。これにより、スクリプトに動的な入力を提供し、柔軟な処理を実現することができます。Pythonでは、sysモジュールのargvを使用してコマンドライン引数を処理します。

sys.argvの概要

sys.argvは、Pythonのsysモジュールに含まれるリストで、コマンドラインからスクリプトに渡された引数を格納します。このリストの最初の要素(sys.argv[0])はスクリプトの名前で、その後に続く各要素が実際のコマンドライン引数です。

基本的な使用方法

まず、sysモジュールをインポートする必要があります。次に、sys.argvを使って引数を取得し、処理します。

import sys

def main():
    print("スクリプト名:", sys.argv[0])
    print("引数のリスト:", sys.argv[1:])

if __name__ == "__main__":
    main()

実行例

このスクリプトを args_example.py として保存し、次のようにコマンドラインから実行します:

python args_example.py arg1 arg2 arg3

出力は次のようになります:

スクリプト名: args_example.py
引数のリスト: ['arg1', 'arg2', 'arg3']

引数の数をチェックする方法

スクリプトが期待する引数の数をチェックすることが重要です。例えば、2つの引数が必要なスクリプトの場合、以下のようにチェックします:

import sys

def main():
    if len(sys.argv) != 3:
        print("Usage: python script.py <arg1> <arg2>")
        sys.exit(1)

    arg1 = sys.argv[1]
    arg2 = sys.argv[2]

    print("引数1:", arg1)
    print("引数2:", arg2)

if __name__ == "__main__":
    main()

実行例

python script.py hello world

出力:

引数1: hello
引数2: world

コマンドライン引数を用いた実例

次に、引数を使用して簡単な加算を行うスクリプトを紹介します。

import sys

def main():
    if len(sys.argv) != 3:
        print("Usage: python sum.py <num1> <num2>")
        sys.exit(1)

    try:
        num1 = float(sys.argv[1])
        num2 = float(sys.argv[2])
    except ValueError:
        print("引数は数値である必要があります")
        sys.exit(1)

    result = num1 + num2
    print(f"合計: {result}")

if __name__ == "__main__":
    main()

実行例

python sum.py 3.5 7.2

出力:

合計: 10.7

エラー処理

コマンドライン引数が不足している場合や、正しい形式でない場合のエラー処理を行います。

import sys

def main():
    if len(sys.argv) != 3:
        print("Usage: python script.py <num1> <num2>")
        sys.exit(1)

    try:
        num1 = float(sys.argv[1])
        num2 = float(sys.argv[2])
    except ValueError:
        print("引数は数値である必要があります")
        sys.exit(1)

    result = num1 + num2
    print(f"合計: {result}")

if __name__ == "__main__":
    main()

まとめ

  • sys.argv: コマンドライン引数をリストとして保持。
  • sys.argv[0]: スクリプトの名前。
  • sys.argv[1]以降: コマンドラインから渡された引数。
  • エラー処理: 引数の数や型を確認し、適切にエラーメッセージを表示。

sys.argvを使うことで、スクリプトに動的な入力を渡し、柔軟な処理を行うことができます。正しい引数の数や型をチェックすることで、スクリプトの信頼性を高めることができます。

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?