【Python】コマンドラインから関数を実行する

Pythonプログラミングを学び始めたばかりの方へ、この記事ではコマンドラインからPythonスクリプトを実行する方法をわかりやすく解説します。

Pythonインタプリタの起動方法やスクリプトファイルの実行方法、コマンドライン引数の使い方、そして関数をコマンドラインから実行する方法まで、具体的な例を交えて説明します。

また、argparseモジュールを使った引数の解析方法も紹介しますので、これを読めばコマンドラインからPythonスクリプトを自在に操作できるようになります。

初心者の方でも安心して学べる内容となっていますので、ぜひ最後までご覧ください。

目次から探す

コマンドラインからPythonスクリプトを実行する基本

Pythonスクリプトをコマンドラインから実行する方法は、Pythonプログラミングを学ぶ上で非常に重要です。

ここでは、Pythonスクリプトの基本的な実行方法と、コマンドライン引数の取り扱いについて解説します。

Pythonスクリプトの基本的な実行方法

Pythonインタプリタの起動

Pythonインタプリタは、Pythonコードを対話的に実行するためのツールです。

インタプリタを起動するには、コマンドラインで以下のコマンドを入力します。

python

これにより、Pythonインタプリタが起動し、以下のようなプロンプトが表示されます。

Python 3.12.4 (tags/v3.12.4:8e8a4ba, Jun  6 2024, 19:30:16) [MSC v.1940 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

このプロンプトが表示されたら、Pythonコードを直接入力して実行することができます。

例えば、以下のように入力します。

>>> print("Hello, World!")

これにより、以下のように出力されます。

Hello, World!

スクリプトファイルの実行

Pythonスクリプトをファイルに保存して実行する方法もあります。

まず、テキストエディタを使用して以下のようなPythonコードを含むファイルを作成します。

# hello.py
print("Hello, World!")

このファイルを保存したら、コマンドラインで以下のコマンドを入力してスクリプトを実行します。

python hello.py

これにより、以下のように出力されます。

Hello, World!

コマンドライン引数の基本

コマンドライン引数を使用すると、スクリプトに外部からデータを渡すことができます。

これにより、スクリプトの動作を柔軟に制御することができます。

sys.argvの使い方

Pythonでは、sysモジュールのargvリストを使用してコマンドライン引数を取得します。

sys.argvは、スクリプト名とコマンドライン引数を含むリストです。

以下の例を見てみましょう。

# args_example.py
import sys
print("スクリプト名:", sys.argv[0])
print("引数1:", sys.argv[1])
print("引数2:", sys.argv[2])

このスクリプトを実行するには、以下のようにコマンドラインで入力します。

python args_example.py arg1 arg2

これにより、以下のように出力されます。

スクリプト名: args_example.py
引数1: arg1
引数2: arg2

コマンドライン引数の取得方法

sys.argvを使用してコマンドライン引数を取得する方法をもう少し詳しく見てみましょう。

以下の例では、引数の数をチェックし、適切なメッセージを表示します。

# args_check.py
import sys
if len(sys.argv) != 3:
    print("使用方法: python args_check.py <引数1> <引数2>")
    sys.exit(1)
arg1 = sys.argv[1]
arg2 = sys.argv[2]
print("引数1:", arg1)
print("引数2:", arg2)

このスクリプトを実行するには、以下のようにコマンドラインで入力します。

python args_check.py value1 value2

これにより、以下のように出力されます。

引数1: value1
引数2: value2

もし引数の数が正しくない場合、以下のようにエラーメッセージが表示されます。

使用方法: python args_check.py <引数1> <引数2>

以上が、コマンドラインからPythonスクリプトを実行する基本的な方法と、コマンドライン引数の取り扱いです。

次のセクションでは、関数をコマンドラインから実行する方法について詳しく見ていきます。

関数をコマンドラインから実行する方法

関数の定義と呼び出し

基本的な関数の定義

Pythonで関数を定義する方法は非常にシンプルです。

defキーワードを使って関数名を定義し、その後に引数を括弧内に記述します。

以下は基本的な関数の定義例です。

def greet(name):
    print(f"こんにちは、{name}さん!")

この関数は、引数として名前を受け取り、その名前を使って挨拶を表示します。

関数の呼び出し方法

定義した関数を呼び出すには、関数名に引数を渡して実行します。

以下は先ほど定義したgreet関数を呼び出す例です。

greet("太郎")

このコードを実行すると、以下のように表示されます。

こんにちは、太郎さん!

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

引数を受け取る関数の定義

次に、コマンドライン引数を受け取る関数を定義します。

例えば、2つの数値を受け取り、その合計を計算する関数を定義してみましょう。

def add_numbers(a, b):
    return a + b

この関数は、2つの引数を受け取り、その合計を返します。

コマンドライン引数を関数に渡す方法

コマンドライン引数を関数に渡すためには、sys.argvを使います。

sys.argvはコマンドライン引数をリストとして提供します。

以下は、コマンドライン引数を使って先ほどのadd_numbers関数を実行する例です。

まず、スクリプトファイルを作成します。

例えば、add.pyという名前のファイルを作成し、以下のコードを記述します。

import sys
def add_numbers(a, b):
    return a + b
if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("使用方法: python add.py <数値1> <数値2>")
        sys.exit(1)
    num1 = float(sys.argv[1])
    num2 = float(sys.argv[2])
    result = add_numbers(num1, num2)
    print(f"合計: {result}")

このスクリプトは、コマンドライン引数として2つの数値を受け取り、その合計を計算して表示します。

スクリプトを実行するには、以下のようにコマンドラインから実行します。

python add.py 3 5

このコマンドを実行すると、以下のように表示されます。

合計: 8.0

このようにして、コマンドライン引数を関数に渡して実行することができます。

これにより、スクリプトの柔軟性が大幅に向上します。

argparseモジュールを使った引数の解析

Pythonの標準ライブラリには、コマンドライン引数を簡単に解析できるargparseモジュールが含まれています。

このモジュールを使うことで、複雑な引数解析も簡単に行うことができます。

ここでは、argparseモジュールの基本的な使い方から、必須引数とオプション引数の設定、引数の型指定やデフォルト値の設定方法について詳しく解説します。

argparseモジュールの基本

argparseのインポートと基本的な使い方

まずは、argparseモジュールをインポートする方法と、基本的な使い方について見ていきましょう。

import argparse
# ArgumentParserオブジェクトの生成
parser = argparse.ArgumentParser(description="コマンドライン引数の例")
# 引数の追加
parser.add_argument("name", help="ユーザーの名前")
# 引数の解析
args = parser.parse_args()
# 引数の使用
print(f"こんにちは、{args.name}さん!")

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

$ python hello.py Taro
こんにちは、Taroさん!

引数の定義と解析

argparseモジュールでは、ArgumentParserオブジェクトを使って引数を定義し、parse_argsメソッドで引数を解析します。

上記の例では、nameという引数を定義し、その引数を使ってメッセージを表示しています。

必須引数とオプション引数

argparseモジュールでは、必須引数とオプション引数を簡単に設定できます。

ここでは、それぞれの設定方法について解説します。

必須引数の設定

必須引数は、コマンドラインから必ず指定しなければならない引数です。

上記の例のname引数は必須引数です。

import argparse
parser = argparse.ArgumentParser(description="必須引数の例")
parser.add_argument("age", type=int, help="ユーザーの年齢")
args = parser.parse_args()
print(f"あなたは{args.age}歳です。")

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

$ python age.py 25
あなたは25歳です。

オプション引数の設定

オプション引数は、指定しなくても良い引数です。

オプション引数は、通常ハイフン(-)またはダブルハイフン(–)で始まります。

import argparse
parser = argparse.ArgumentParser(description="オプション引数の例")
parser.add_argument("--greeting", help="挨拶の言葉", default="こんにちは")
args = parser.parse_args()
print(f"{args.greeting}、世界!")

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

$ python greet.py
こんにちは、世界!
$ python greet.py --greeting "おはよう"
おはよう、世界!

引数の型とデフォルト値

引数の型指定やデフォルト値の設定もargparseモジュールで簡単に行えます。

引数の型指定

引数の型を指定することで、入力された値が自動的にその型に変換されます。

import argparse
parser = argparse.ArgumentParser(description="引数の型指定の例")
parser.add_argument("number", type=int, help="整数の引数")
args = parser.parse_args()
print(f"入力された数値は{args.number}です。")

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

$ python number.py 42
入力された数値は42です。

デフォルト値の設定

デフォルト値を設定することで、引数が指定されなかった場合にその値が使用されます。

import argparse
parser = argparse.ArgumentParser(description="デフォルト値の設定の例")
parser.add_argument("--color", help="好きな色", default="青")
args = parser.parse_args()
print(f"あなたの好きな色は{args.color}です。")

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

$ python color.py
あなたの好きな色は青です。
$ python color.py --color 赤
あなたの好きな色は赤です。

以上が、argparseモジュールを使った引数の解析方法です。

これらの基本を押さえておけば、複雑なコマンドライン引数の解析も簡単に行うことができます。

実践例:コマンドラインから関数を実行するスクリプト

ここでは、具体的な例を通じてコマンドラインから関数を実行する方法を学びます。

まずは、単純な計算を行う関数を実行する例を見ていき、その後、ファイル操作を行う関数の実行方法を紹介します。

例1: 単純な計算関数の実行

関数の定義

まず、2つの数値を受け取り、その和を返す関数を定義します。

この関数は add という名前にします。

def add(a, b):
    return a + b

コマンドライン引数の解析

次に、コマンドライン引数を解析するために argparse モジュールを使用します。

以下のコードでは、2つの数値をコマンドライン引数として受け取り、それを add関数に渡します。

import argparse
def add(a, b):
    return a + b
if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Add two numbers")
    parser.add_argument("a", type=int, help="First number")
    parser.add_argument("b", type=int, help="Second number")
    args = parser.parse_args()
    
    result = add(args.a, args.b)
    print(f"The result is: {result}")

関数の呼び出しと結果の表示

上記のスクリプトを add_numbers.py という名前で保存し、コマンドラインから実行します。

例えば、次のように実行します。

python add_numbers.py 3 5

このコマンドを実行すると、以下のような出力が得られます。

The result is: 8

例2: ファイル操作を行う関数の実行

次に、ファイルの内容を読み込み、その内容を表示する関数を実行する例を見ていきます。

関数の定義

まず、ファイル名を受け取り、そのファイルの内容を表示する関数を定義します。

この関数は read_file という名前にします。

def read_file(filename):
    with open(filename, 'r') as file:
        content = file.read()
    return content

コマンドライン引数の解析

次に、コマンドライン引数を解析するために argparse モジュールを使用します。

以下のコードでは、ファイル名をコマンドライン引数として受け取り、それを read_file関数に渡します。

import argparse
def read_file(filename):
    with open(filename, 'r') as file:
        content = file.read()
    return content
if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Read a file and display its content")
    parser.add_argument("filename", type=str, help="The name of the file to read")
    args = parser.parse_args()
    
    content = read_file(args.filename)
    print(content)

関数の呼び出しと結果の表示

上記のスクリプトを read_file.py という名前で保存し、コマンドラインから実行します。

例えば、次のように実行します。

python read_file.py example.txt

このコマンドを実行すると、指定したファイル example.txt の内容が表示されます。

例えば、example.txt の内容が以下のようになっているとします。

Hello, world!
This is a test file.

この場合、コマンドの出力は以下のようになります。

Hello, world!
This is a test file.

以上のように、コマンドラインから関数を実行する方法を具体的な例を通じて学びました。

これにより、Pythonスクリプトをより柔軟に活用できるようになります。

目次から探す