結論から言うと、os モジュールは、PythonからOSに関係する情報や操作を扱うための標準ライブラリです。
Pythonで自動化ツールを作ると、現在の作業フォルダを確認したり、環境変数を読んだり、フォルダを作成したりする場面があります。
そのような処理で使えるのが os モジュールです。
この記事では、os でできる代表的な操作を、小さな設定確認ツールの例で整理します。
この記事でわかること
完成コード
完成コードは次の通りです。
import os
from pathlib import Path
def prepare_work_folder() -> Path:
base_dir = Path(os.getenv("REPORT_WORK_DIR", "work"))
output_dir = base_dir / "output"
os.makedirs(output_dir, exist_ok=True)
return output_dir
def show_runtime_info(output_dir: Path) -> None:
print(f"現在の作業フォルダ: {os.getcwd()}")
print(f"保存先フォルダ: {output_dir}")
print(f"OSの区切り文字: {os.sep}")
file_names = os.listdir(output_dir)
if file_names:
print("保存先にあるファイル:")
for name in file_names:
print(f"- {name}")
else:
print("保存先にファイルはまだありません")
folder = prepare_work_folder()
show_runtime_info(folder)このコードは、環境変数 REPORT_WORK_DIR があればその値を作業フォルダとして使い、なければ work/output フォルダを作成します。
コードのポイント
このコードでは、os モジュールを使って実行環境に関係する情報を扱っています。
os.getenv()で環境変数を読み取っていますos.makedirs()でフォルダを作成していますos.getcwd()で現在の作業フォルダを確認していますos.listdir()でフォルダ内の名前を取得しています- パスの組み立てには
pathlib.Pathも併用しています
os はできることが多いモジュールです。
すべてを一度に覚えるより、実務でよく使う操作から少しずつ確認すると理解しやすくなります。
コードを順番に説明します
主要な処理を分けて説明します。
1. 環境変数を読み取ります
base_dir = Path(os.getenv("REPORT_WORK_DIR", "work"))os.getenv() は、環境変数を読み取る関数です。
ここでは REPORT_WORK_DIR という環境変数を探し、見つからない場合は "work" を使うようにしています。
環境変数は、プログラムの外側から設定を渡したいときに使われます。
たとえば、開発環境では work、本番環境では別の保存先、というように切り替えたい場合に便利です。
2. フォルダを作成します
output_dir = base_dir / "output"
os.makedirs(output_dir, exist_ok=True)os.makedirs() は、フォルダを作成する関数です。
途中のフォルダが存在しない場合もまとめて作成できます。exist_ok=True を付けると、すでにフォルダがある場合でもエラーにしません。
ここではパスの組み立てに Path を使い、フォルダ作成に os.makedirs() を使っています。
最近のPythonでは、多くの os 関数が Path も受け取れるため、組み合わせて使えます。
3. 現在の作業フォルダを確認します
print(f"現在の作業フォルダ: {os.getcwd()}")os.getcwd() は、現在の作業フォルダを返します。
作業フォルダは、相対パスがどこを基準に解釈されるかに関係します。
ファイルが見つからないエラーが出るときは、コードが置いてある場所ではなく、実行時の作業フォルダを確認することが大切です。
第5章の import エラーと同じように、「どこから実行しているか」は実務でもよく見るポイントです。
4. フォルダ内の名前を取得します
file_names = os.listdir(output_dir)os.listdir() は、指定したフォルダ内にあるファイル名やフォルダ名をリストで返します。
戻ってくるのは名前の文字列なので、ファイルの詳しい情報やパスとしての操作を続けたい場合は Path と組み合わせると扱いやすくなります。
ファイルを拡張子で探したい場合は、前の記事で扱った Path.glob() も便利です。
単純に名前を一覧表示したいときは os.listdir() でも十分です。
実務で使うときのポイント
実務では、os は「実行環境に関係する情報」を扱うときによく使います。
環境変数、現在の作業フォルダ、プロセスに関係する情報などは、os を使う場面が多いです。
一方で、ファイルパスの組み立てやファイルの読み書きは、pathlib のほうが読みやすいことがあります。
そのため、パス操作は pathlib、環境やOS寄りの情報は os、という分け方から始めると迷いにくくなります。
第6章では、このあと shutil でファイルコピーを扱います。pathlib でパスを作り、os で環境を確認し、shutil でコピーする、というように標準ライブラリを組み合わせると、日常作業を自動化しやすくなります。