Python でパスからディレクトリを取得

Sidrah Abdullah 2023年1月30日
  1. さまざまな OS でのファイルパスの違い
  2. os.path.basename を使用して、Python のファイルパスからファイル名を検索する
  3. os.path.splittext を使用して、Python のファイルパスからファイル名を検索する
  4. os.path.dirname を使用して、Python のファイルパスからディレクトリ名を検索する
  5. Python で pathlib モジュールを使用してディレクトリ名を抽出する
  6. os.path.abspath を使用して、Python のファイルパスからディレクトリ名を検索する
Python でパスからディレクトリを取得

ファイルパスは、システムまたはディレクトリ内のファイルの場所を表す一意の文字列です。場合によっては、ファイルパスから任意の部分またはチャンクを取得または抽出する必要があります。

Python のファイルパスからパーツを抽出する方法はいくつかあります。

さまざまな OS でのファイルパスの違い

Linux ディレクトリ構造(MAC を含む)ではスラッシュ/を使用しますが、Windows では、区切り文字としてバックスラッシュ\を使用します。

システムで使用されている区切り文字を確認するには、os.sep または os.path.sep を使用します。システムで使用されているパス区切り文字が返されます。

os.path.basename を使用して、Python のファイルパスからファイル名を検索する

Python でファイルパスの一部を抽出する最初の最も簡単な方法は、os.path.basename() 関数を使用することです。

この関数は、ファイルパスからファイル名とその拡張子を返します。さらに、すべての Python バージョンで機能します。

import os

fpath = "c:\Project\input.txt"
os.path.basename(fpath)

出力:

os.path.basename を使用して、Python のファイルパスからファイル名を検索します

os.path.splittext を使用して、Python のファイルパスからファイル名を検索する

拡張子ではなくファイルパスからファイル名だけを抽出する場合は、os.path.splittext() 関数を使用します。この関数はファイル名のみを返します。

さらに、この関数を使用してインデックス 0 を追加し、目的の出力を取得します。splittext() 関数は、ファイルパスを配列に分割します。したがって、インデックス 0 はファイル名を表し、インデックス 1 はその拡張子を表します。

import os

fpath = "c:\Project\input.txt"
fname = os.path.splitext(fpath)[0]

出力:

os.path.splittext を使用して、Python のファイルパスからファイル名を検索します

os.path.dirname を使用して、Python のファイルパスからディレクトリ名を検索する

関数 os.path.dirname() は、パスからディレクトリ名を抽出するために使用されます。この関数は、Python コンソールに文字列としてディレクトリ名を返します。

import os

fpath = "c:\Project\input.txt"
dirname = os.path.dirname(filepath)
print(dirname)

出力:

os.path.dirname を使用して、Python のファイルパスからディレクトリ名を検索します

この関数は、親ディレクトリへの完全なパスを返します。

Python で pathlib モジュールを使用してディレクトリ名を抽出する

ファイルパスからディレクトリを取得する別の方法は、pathlib モジュールを使用することです。これは、Python バージョン 3.4 以降で特に利用できます。

この関数は引数とファイルパスを受け取り、フェッチされたアイテムに応じてさまざまな出力を返すことができます。まず、ファイルとそのパスをインポートしましょう。

from pathlib import Path

p = Path("C:\\Program Files\\Internet Explorer\\iexplore.exe")

親ディレクトリを確認するには、次のコードを実行します。

str(p.parent)

出力:

pathlib モジュールを使用して Python でディレクトリ名を抽出する

ディレクトリとファイル名をパーツとしてフェッチするには、パスモジュールのパーツ関数を使用します。例えば:

P.parts

あなたはこのようなものを手に入れるでしょう。

pathlib モジュールを使用して Python でディレクトリ名を抽出する

os.path.abspath を使用して、Python のファイルパスからディレクトリ名を検索する

OS モジュールは、ファイルパスからディレクトリを抽出する機能も提供します。

この関数は、バックスラッシュとドット文字の 2つの異なる引数を取ります。バックスラッシュ文字はルートディレクトリを返し、ドットは現在のディレクトリを返します。

import os

directory = os.path.abspath("\\")
print(directory)

出力:

os.path.abspath を使用して、Python のファイルパスからディレクトリ名を検索します

絶対パスを取得するためのコードは次のとおりです。

directory = os.path.abspath(".")
print(directory)

出力:

'C:\Users\User\Desktop'

このチュートリアルでは、Python でファイルパスを分割するためのいくつかの関数とモジュールについて説明しました。また、OS および Path モジュールを使用して、Python のファイルパスから名前またはディレクトリを抽出する方法も学習しました。

関連記事 - Python Directory

関連記事 - Python Path