Python スクリプトを実行するには、端末(またはコマンドプロンプト)から適切なコマンドを発行します。本稿では、スクリプト実行の基本から、引数処理、ファイル操作、および実用的なモジュール活用まで、体系的に解説します。
1. スクリプトの実行コマンド
Python ファイル(例:main.py)を実行する最も一般的な方法は以下の通りです:
python main.py
# または Python 3 を明示的に指定する場合
python3 main.py
実行可能権限を付与した Unix/Linux/macOS 環境では、shebang 行を追加して直接実行も可能です:
#!/usr/bin/env python3
print("Hello, World!")
その後、以下のように実行できます:
chmod +x main.py
./main.py
2. コマンドライン引数の受け取り
sys.argv を用いると、スクリプト起動時の引数をリストとして取得できます。インデックス 0 はスクリプト名自体、1 以降がユーザー入力です。
# args_demo.py
import sys
if len(sys.argv) > 1:
print(f"第1引数: {sys.argv[1]}")
print(f"全引数: {sys.argv}")
else:
print("引数が指定されていません。")
実行例:
python args_demo.py hello 42
# 出力:
# 第1引数: hello
# 全引数: ['args_demo.py', 'hello', '42']
3. argparse を使った高機能な引数解析
複雑なオプションやヘルプメッセージを自動生成したい場合は、標準ライブラリ argparse を推奨します。
# calc.py
import argparse
parser = argparse.ArgumentParser(description="簡単な計算ツール")
parser.add_argument("base", type=float, help="基数(数値)")
parser.add_argument("-p", "--power", type=float, default=2.0,
help="指数(デフォルト: 2)")
parser.add_argument("-v", "--verbose", action="store_true",
help="詳細出力を有効化")
args = parser.parse_args()
result = args.base ** args.power
if args.verbose:
print(f"{args.base} の {args.power} 乗 = {result}")
else:
print(result)
使用例:
python calc.py 5 -p 3 -v
# 出力: 5.0 の 3.0 乗 = 125.0
4. ファイルの安全な読み書き(with 文)
ファイル操作では、with 文によるコンテキストマネージャーを使うことで、例外発生時も自動クローズが保証されます。
# read_config.py
try:
with open("config.txt", "r", encoding="utf-8") as f:
lines = [line.strip() for line in f if line.strip()]
print(f"読み込んだ行数: {len(lines)}")
except FileNotFoundError:
print("設定ファイルが見つかりません。")
5. OS 操作とパス処理
os および pathlib(推奨)モジュールで、ファイル・ディレクトリ操作を安全に実施できます。
# path_demo.py
from pathlib import Path
root = Path("data")
log_file = root / "app.log"
# ディレクトリ作成(存在しない場合)
root.mkdir(exist_ok=True)
# ファイル存在確認と書き込み
if not log_file.exists():
log_file.write_text("ログ開始\n", encoding="utf-8")
else:
log_file.write_text(log_file.read_text(encoding="utf-8") + "新規エントリ\n", encoding="utf-8")
6. 外部コマンドの実行
subprocess モジュールを用いて、外部プログラムを呼び出し、その出力を取得できます。
# run_command.py
import subprocess
try:
result = subprocess.run(
["ls", "-l"],
capture_output=True,
text=True,
check=True
)
print("標準出力:\n", result.stdout[:200] + "...")
except subprocess.CalledProcessError as e:
print("コマンド実行失敗:", e)
7. 実行中のプロセス制御
スクリプト内で異常終了を意図する場合は、sys.exit() を使用します。これは exit() よりも推奨される明示的な方法です。
import sys
if not condition_met:
print("必須条件を満たしていません。")
sys.exit(1) # 終了ステータス 1(エラー)