Python でパスからファイル名を取得する方法

Syed Moiz Haider 2023年10月10日
  1. パスからファイル名を取得するために ntpath ライブラリを使用する
  2. パスからファイル名を取得するには ntpath.basename() を使用する
  3. Python は os.path.basename() を使用してパスからファイル名を取得する
  4. Python パスからファイル名を取得するには os.path.split() を使用する
Python でパスからファイル名を取得する方法

このチュートリアルでは、Python でパスからファイル名を取得する方法を紹介します。また、特定のオペレーティングシステムに関連した概念をさらに説明するためのコード例もいくつか挙げています。

パスからファイル名を取得するために ntpath ライブラリを使用する

パスの定義方法は様々です。Windows のファイルのパスはバックスラッシュかフォワードスラッシュのどちらかをパスの区切り文字として使うことができます。したがって、ntpath モジュールはすべてのプラットフォーム上のすべてのパスに対して動作します。

ntpath ライブラリは basename という関数をサポートしています。この関数は path を渡し、実行後に ntpath.basename(path)path からファイル名を返します。このメソッドを利用する基本的な例を以下に示します。

import ntpath

print(ntpath.basename("usr/temp/new/sample"))

出力:

sample

パスからファイル名を取得するには ntpath.basename() を使用する

このライブラリは Linux でも動作します。ただし、Linux では、ファイル名にバックスラッシュが含まれている場合があります。そのため、Linux では、r'usr/xyz\python'は常に usr フォルダ内のファイル xyz\python を参照することになります。

import ntpath

print(ntpath.basename("r'usr/xyz\python'"))

出力:

xyz\python

Windows の usr フォルダの xyz サブフォルダにある python というファイル名を指します。パスの中でバックスラッシュとフォワードスラッシュの両方が使用されている場合、どちらのプラットフォームを使用しているかを知る必要があります。そうしないと、パスを正しく解釈できないかもしれません。

パスからファイル名を取得する方法として、os.path.basename() を使用する方法もあります。

Python は os.path.basename() を使用してパスからファイル名を取得する

パスからファイル名を取得するには、os.path ライブラリが提供する関数を使用することもできます。この関数は basename であり、ファイル名を取得するのに用います。

basenamepath をパラメータとして受け取り、filename を返します。

以下にコード例を示します。

import os

print(os.path.basename("usr/temp/eng"))

出力:

eng

システムが POSIX で、ダブルフォワードスラッシュを含むウィンドウズスタイルのパスが os.path.basename() に渡された場合、出力は与えられた完全なパスになります。

# in Linux
import os

print(os.path.basename("E:\\aws\\temp.jpg"))

出力:

E:\\aws\\temp.jpg

Python パスからファイル名を取得するには os.path.split() を使用する

先頭と末尾が個別に必要な場合は、os.path.split() メソッドを用いることができます。このメソッドは path を引数にとり、パスの headtail を返します。

以下にコード例を示します。

import os

head, tail = os.path.split("/Users/xyz/Downloads")
print(head)
print(tail)

出力:

/Users/xyz
Downloads
Syed Moiz Haider avatar Syed Moiz Haider avatar

Syed Moiz is an experienced and versatile technical content creator. He is a computer scientist by profession. Having a sound grip on technical areas of programming languages, he is actively contributing to solving programming problems and training fledglings.

LinkedIn

関連記事 - Python Path