Pythonの os モジュールについて
os モジュールは、Pythonが動作しているオペレーティングシステム(OS)とやり取りするための機能を提供します。ファイルやディレクトリの操作、環境変数の取得、プロセスの実行など、OSに依存する様々な操作を行うことができます。
基礎的な事
os モジュールをインポートすることで利用できます。
import os
OSに依存する機能なので、異なるOS(Windows, macOS, Linuxなど)で動作が異なる場合があります。 ファイルパスの操作など、OSに依存しないより高水準な操作を提供する pathlib モジュールもよく一緒に使われます。
よく使うコマンド
以下によく使う os モジュール内のコマンドとその簡単な説明を挙げます。
ファイルとディレクトリ操作:
-
os.getcwd(): 現在の作業ディレクトリを取得します。
-
os.chdir(path): 作業ディレクトリを指定したパスに変更します。
-
os.listdir(path='.'): 指定したパス(デフォルトは現在のディレクトリ)にあるファイルとディレクトリのリストを取得します。
-
os.mkdir(path): 指定したパスにディレクトリを作成します。
-
os.makedirs(path, exist_ok=False): 指定したパスにディレクトリを再帰的に作成します。途中のディレクトリが存在しない場合も作成します。exist_ok=True を指定すると、ディレクトリが既に存在してもエラーになりません。
-
os.remove(path): 指定したファイルを削除します。
-
os.rmdir(path): 指定した空のディレクトリを削除します。
-
os.rename(src, dst): ファイルまたはディレクトリの名前を src から dst に変更します。
-
os.path.exists(path): 指定したパスにファイルまたはディレクトリが存在するかどうかを返します。
-
os.path.isfile(path): 指定したパスがファイルかどうかを返します。
-
os.path.isdir(path): 指定したパスがディレクトリかどうかを返します。
-
os.path.join(path, *paths): 複数のパス要素をOSに合わせた形式で結合します。
-
os.path.abspath(path): 指定したパスの絶対パスを返します。
環境変数:
-
os.environ: 環境変数を表すマッピングオブジェクトです。辞書のようにアクセスできます。
-
os.getenv(key, default=None): 指定した環境変数の値を取得します。存在しない場合は default を返します。
プロセスの操作:
-
os.system(command): シェルコマンドを実行します。
-
os.exec(path, args): 現在のプロセスを新しいプログラムに置き換えます。(通常は subprocess モジュールの方がより柔軟で推奨されます。)
使用例
いくつかの簡単な使用例を示します。
現在の作業ディレクトリの取得と変更:
現在の作業ディレクトリを取得
current_dir = os.getcwd()
print(f"現在の作業ディレクトリ: {current_dir}")
新しい作業ディレクトリを指定
new_dir = "/tmp"
os.chdir(new_dir)
print(f"作業ディレクトリを '{new_dir}' に変更しました。")
変更後の作業ディレクトリを確認
print(f"現在の作業ディレクトリ: {os.getcwd()}")
元のディレクトリに戻る (例として)
os.chdir(current_dir)
print(f"作業ディレクトリを元に戻しました: {os.getcwd()}")
ディレクトリの作成とファイルの一覧表示:
新しいディレクトリを作成
new_directory = "my_new_folder"
if not os.path.exists(new_directory):
os.mkdir(new_directory)
print(f"ディレクトリ '{new_directory}' を作成しました。")
else:
print(f"ディレクトリ '{new_directory}' は既に存在します。")
現在のディレクトリのファイルとディレクトリをリスト表示
print("現在のディレクトリのファイルとディレクトリ:")
for item in os.listdir():
print(item)
作成したディレクトリを削除 (空の場合)
os.rmdir(new_directory)
print(f"ディレクトリ '{new_directory}' を削除しました。")
ファイルパスの結合:
folder = "data"
filename = "sample.txt"
full_path = os.path.join(folder, filename)
print(f"結合されたパス: {full_path}")
環境変数の取得:
PATH 環境変数を取得
path_env = os.environ.get("PATH")
if path_env:
print(f"PATH 環境変数: {path_env[:100]}...") # 長い場合があるので一部を表示
else:
print("PATH 環境変数は設定されていません。")
存在しない環境変数を取得 (デフォルト値を指定)
non_existent_var = os.getenv("NON_EXISTENT_VARIABLE", "デフォルト値")
print(f"存在しない環境変数: {non_existent_var}")
これらの例は os モジュールの基本的な使い方を示しています。より複雑なファイル操作やプロセス管理には、shutil モジュールや subprocess モジュールなども合わせて利用することが一般的です。