【Python初心者向け】os.pathモジュールの使い方やユースケースを紹介!

Python 初心者向け os.pathモジュールの使い方

こんにちは、りょうです!

os.pathモジュールはパスからファイル名やディレクトリ名を取得したり、パスを分割・結合したりする際に使用されるモジュールです。

パス操作はPythonでデータを扱う際に、必ず必要な操作です。ぼくも日常的にos.pathモジュールでパスの結合や分割を行い、意図したファイルパスを作成しています。

Python初心者のかたはぜひ本記事で、基本的なパス操作を理解し、サクッとパスの操作を行えるようにしましょう!

対象操作
  • パスの結合(os.path.join)
  • パスの分割(os.path.split, os.path.splitext)
  • ファイル名の取得(os.path.basename)
  • ディレクトリ名の取得(os.path.dirname)

本記事を読んだあとは実際に手を動かして、紹介したメソッドがどのような処理をするか確認してみてください!

動作環境
・macOS Monterey
・Python 3.10.10

目次

os.pathモジュールの概要

下記にos.pathモジュールのパス分割・結合、ファイル名やディレクトリ名の取得で使用するメソッドをまとめました。

スクロールできます
メソッド名説明
split()指定されたパスのファイル名と、それまでのパスを返します。
splitext()指定されたファイルの拡張子と拡張子を除くファイル名までのパスを返します。
join()パスとファイル名などを結合します。
basename()指定されたパスのファイル名を返します。
dirname()指定されたパスからファイル名を除いたものを返します。

コードを記述するさいに、”import os”の1行を入れて、”os”をインポートするだけで、os.path()の各呼び出しが行えます。

りょう

以降では、実際にコードをみながらそれぞれのメソッドの処理を理解していきます!

パスの分割(os.path.split, os.path.splitext)

os.path.split()

os.path.split()関数は、パスを最後の区切り文字(スラッシュやバックスラッシュなど)で分割し、ディレクトリ部分と最後の部分(通常はファイル名)を返します。

import os

full_path = "/path/to/directory"
path, filename = os.path.split(full_path)

print(path)       
# /path/to
print(filename)
# directory

os.path.splitext()

os.path.splitext() 関数は、与えられたパスをファイル名と拡張子に分割します。

import os

full_path = "/path/to/directory/file.txt"

filename, extension = os.path.splitext(full_path)

print(filename)
# /path/to/directory/file
print(extension)
# .txt

拡張子は、最初のピリオドから始まる最後の部分を含みます。もしファイル名にピリオドが含まれていなければ、拡張子は空文字列となります。

りょう

なので、今回の例の場合、.txt がなければextensionには値が格納されません。

パスの結合(os.path.join)

os.path.join()関数は、引数として与えられた複数のパスを結合して一つのパスを作成します。

import os

path1 = "/path/to"
path2 = "directory"
full_path = os.path.join(path1, path2)

print(full_path)
# /path/to/directory

注意点として以下のように間に ‘/’ を含めないようにしましょう。エラーにはなりませんが、意図したパスになりません。
full_path = os.path.join(path1, ‘/’, path2) ← 間違いです!
# /directory

ファイル名の取得(os.path.basename)

os.path.basename()関数は、与えられたパスから最後の部分(通常はファイル名)を返します。

import os

full_path = "/path/to/directory/file.txt"
filename = os.path.basename(full_path)

print(filename)
# file.txt

上記の例だと、full_pathに格納された値である “/path/to/directory/file.txt”の最後の部分の file.txt を返しています。

ディレクトリ名の取得(os.path.dirname)

os.path.dirname()関数は、与えられたパスからディレクトリ部分を抽出して返します。

import os

full_path = "/path/to/directory/file.txt"
directory = os.path.dirname(full_path)

print(directory)
# /path/to/directory

上記の例だと、full_pathに格納された値である “/path/to/directory/file.txt”のディレクトリ部分にあたるを”/path/to/directory”返しています。

os.pathのユースケース

1.パスに取得日を挿入する

os.pathモジュールを使ってファイルパスに、今日の日付をYYYYMMDD形式でディレクトリとして挿入する例を考えてみます。

import os
from datetime import datetime

today = datetime.today().date() # 2023-06-21
date_string = today.strftime('%Y%m%d') # 20230621

full_path = "/path/to/directory/file.txt"
dir_path, filename = os.path.split(full_path)

new_full_path = os.path.join(dir_path, date_string, filename)
# /path/to/directory/20230621/file.txt

まず元のパスをos.path.split()関数でディレクトリパスとファイル名に分割します。

次に日付ディレクトリをディレクトリパスに追加とファイル名の結合をし、想定した新しいパスを作成します。

2.拡張子を変更する

拡張子を変更する例を考えてみます。

業務ではファイル圧縮などでinputとoutputでファイル形式の変換を行うケースがあると思います。

import os

full_path = "/path/to/directory/file.txt"
filename, _ = os.path.splitext(full_path)

new_full_path = filename + ".csv"

print(new_full_path) 
# /path/to/directory/file.csv

まとめ

いかがでしたか?本記事ではos.pathモジュールについて説明しました。

最後には2パターンの簡単なユースケースを交えて、手と頭を使いながらos.pathモジュールについて理解を深めていただけたかと思います。

パスの操作はデータを扱っていると、ファイルの圧縮や取得日の挿入などで必要になる作業です。

ぜひこの記事が皆さんの一助になれば幸いです。最後まで読んでいただきありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次