コマンドラインから Python プログラムを実行する方法

PythonBeginner
オンラインで実践に進む

はじめに

この実験 (Lab) では、コマンドラインから Python プログラムを実行するという基本的なスキルを習得します。この方法は、自動化、スクリプティング、アプリケーションのデプロイに不可欠です。コマンドラインインターフェース内で、Python スクリプトの作成、実行、および引数の受け渡しについて説明します。

シンプルな Python スクリプトの作成と実行

Python プログラムを実行する最も一般的な方法は、コードを .py 拡張子を持つファイルに記述し、そのファイルをターミナルから Python インタープリタを使用して実行することです。まずは、古典的な「Hello, World!」プログラムを作成しましょう。

まず、新しいファイルを作成する必要があります。WebIDE の左側にあるファイルエクスプローラーで、project ディレクトリ内の空のスペースを右クリックし、「New File」を選択します。ファイル名を hello.py とします。

次に、hello.py ファイルを開き、以下の Python コードを追加します。このコードは、組み込みの print() 関数を使用して、コンソールにメッセージを表示します。

print("Hello, LabEx!")

スクリプトを作成したので、実行できます。WebIDE の統合ターミナルを開きます(まだ開いていない場合は、メニューの Terminal > New Terminal を使用できます)。ターミナルは、ファイルを保存した /home/labex/project ディレクトリで開かれるはずです。

スクリプトを実行するには、python コマンドの後にファイル名を入力します。

python hello.py

Enter キーを押すと、スクリプトの出力がターミナルに直接表示されます。

Hello, LabEx!

これで、コマンドラインから最初の Python スクリプトを正常に作成および実行できました。

コマンドライン引数の使用

実行時に情報を受け渡せるようになると、コマンドラインからスクリプトを実行する能力はさらに強力になります。これらの情報はコマンドライン引数と呼ばれます。Python の sys モジュールは、これらにアクセスするための簡単な方法を提供します。

ここでは、コマンドライン引数として渡された名前でユーザーに挨拶する新しいスクリプトを作成しましょう。

/home/labex/project ディレクトリに greet.py という名前の新しいファイルを作成します。

greet.py に以下のコードを追加します。このスクリプトは sys モジュールをインポートします。コマンドライン引数は sys.argv リストに格納されます。sys.argv[0] は常にスクリプト自体の名前であり、それ以降の引数は sys.argv[1] から始まります。

import sys

## 最初のコマンドライン引数から名前を取得します
name = sys.argv[1]

print(f"Hello, {name}!")

次に、このスクリプトをターミナルから実行しますが、今回はスクリプトのファイル名の後に名前を追加します。例えば、「World」を使ってみましょう。

python greet.py World

スクリプトは「World」を引数として受け取り、出力に使用します。

Hello, World!

ご自身の名前で実行してみて、出力がどのように変化するかを確認することもできます。

python greet.py LabEx
Hello, LabEx!

このテクニックにより、スクリプトは柔軟になり、さまざまな入力に対して再利用可能になります。

スクリプトの堅牢性を高める

前のステップで紹介した greet.py スクリプトを、名前を指定せずに実行するとどうなるでしょうか?試してみましょう。

python greet.py

エラーが発生します。

Traceback (most recent call last):
  File "/home/labex/project/greet.py", line 4, in <module>
    name = sys.argv[1]
IndexError: list index out of range

この IndexError は、スクリプトが sys.argv[1] にアクセスしようとしますが、引数が提供されなかったため、このインデックスが存在しないために発生します。堅牢なスクリプトは、このようなケースを適切に処理する必要があります。

greet.py を修正して、引数が提供されたかどうかを確認するようにしましょう。提供されなかった場合は、デフォルトの名前を使用します。len() 関数を使用して、sys.argv リスト内の要素数を確認できます。len(sys.argv) が 1 より大きい場合、少なくとも 1 つの引数が提供されたことを意味します。

greet.py ファイルを以下のコードで更新してください。

import sys

if len(sys.argv) > 1:
    ## 引数が存在する場合は、提供された引数を使用します
    name = sys.argv[1]
else:
    ## 引数が提供されなかった場合は、デフォルトの名前を使用します
    name = "World"

print(f"Hello, {name}!")

これで、スクリプトはより堅牢になりました。引数なしで再度実行してみましょう。

python greet.py

今回はエラーなく実行され、デフォルトの名前が使用されます。

Hello, World!

引数を指定した場合でも、正しく動作します。

python greet.py LabEx
Hello, LabEx!

潜在的なエラーを処理し、デフォルトの動作を提供することは、信頼性の高いコマンドラインアプリケーションを作成するための重要なプラクティスです。

まとめ

この実験では、コマンドラインから Python プログラムを実行するための基本的なスキルを学びました。まず、簡単なスクリプトを作成して実行しました。次に、sysモジュールを使用してコマンドライン引数を利用することで、スクリプトをより動的でインタラクティブなものにしました。最後に、引数が欠落している可能性のあるケースを処理することで、スクリプトの堅牢性を高める方法を学びました。これらは、コマンドラインツールを構築したりタスクを自動化したりしたい Python 開発者にとって、基礎となるスキルです。