Python でファイル拡張子を取得する

Rayven Esplanada 2023年1月30日
  1. Python でファイルから拡張子を取り出すには os.path モジュールを使用する
  2. Python でファイルから拡張子を取り出すには pathlib モジュールを使用する
Python でファイル拡張子を取得する

このチュートリアルでは、Python でファイル名から拡張子を取得する方法を紹介します。

Python でファイルから拡張子を取り出すには os.path モジュールを使用する

Python には、OS のファイルパスを操作するための便利なユーティリティ関数があらかじめ用意されているモジュール os.path があります。ファイルパスを開いたり、保存したり、更新したり、ファイルパスから情報を取得したりすることができます。

今回はこのモジュールを使って、Python でファイルの拡張子を取得します。

os.path には、与えられたファイルパスのルートと拡張子を分割する関数 splitext() があります。この関数はルート文字列と拡張子文字列を含むタプルを返します。

拡張子が docx のファイルパスの例を示しましょう。

/Users/user/Documents/sampledoc.docx

期待される出力は拡張子 .docx でなければなりません。

拡張子 extensionroot という名前で splitext() の結果を受け取るために、2つの別の変数を宣言します。

import os

path = "/Users/user/Documents/sampledoc.docx"
root, extension = os.path.splitext(path)

print("Root:", root)
print("extension:", extension)

出力:

Root: /Users/user/Documents/sampledoc
Extension: .docx

これで、ルートファイルのパスから拡張子が正常に返されました。

Python でファイルから拡張子を取り出すには pathlib モジュールを使用する

パスを表すクラスを含み、それらのクラスのためのユーティリティ関数と定数を実装した Python モジュールです。

pathlib.Path() はパス文字列を引数に取り、新しい Path オブジェクトを返します。

pathlib.Path オブジェクトはファイルの拡張子情報を返す suffix 属性を持ちます。

import pathlib

path = pathlib.Path("/Users/user/Documents/sampledoc.docx")

print("Parent:", path.parent)
print("Filename:", path.name)
print("Extension:", path.suffix)

ルート以外にも、Path オブジェクト内で parentname という属性を呼び出すだけで、親ファイルのパスと実際のファイル名を取得することができます。

出力:

Parent: /Users/user/Documents
Filename: sampledoc.docx
Extension: .docx

ファイルの拡張子が .tar.gz.tar.bz2 のような場合はどうなりますか?

pathlib は複数のサフィックスを拡張子として持つファイルのための属性も提供しています。Path オブジェクト内の suffixes 属性は、与えられたファイルのすべてのサフィックスを含むリストです。上の例を使って suffixes 属性を出力すると、以下のようになります。

import pathlib

path = pathlib.Path("/Users/user/Documents/sampledoc.docx")

print("Suffix(es):", path.suffixes)

出力:

Suffix(es): ['.docx']

つまり、たとえサフィックスが 1つしかなくても、出力はシングルトンリストになります。

では、.tar.gz を拡張子にした例を試してみましょう。リストを単一の文字列に変換するには、空の文字列に対して join() 関数を利用し、引数に suffixes 属性を指定します。

import pathlib

path = pathlib.Path("/Users/user/Documents/app_sample.tar.gz")

print("Parent:", path.parent)
print("Filename:", path.name)
print("Extension:", "".join(path.suffixes))

出力:

Parent: /Users/user/Documents
Filename: app_sample.tar.gz
Extension: .tar.gz

これで、リストの代わりに実際の拡張機能が表示されるようになりました。

要約すると、ospathlib の 2つのモジュールは、Python でファイルパスからファイルの拡張子を取得するための便利なメソッドを提供します。

os モジュールには、ファイル拡張子からルートとファイル名を分割する関数 splitext があります。pathlibPath オブジェクトを生成し、拡張子を suffixes 属性に格納します。

ファイル内に複数の拡張子を想定している場合は、属性 suffixes を使用して複数の拡張子を簡単にサポートできるため、pathlib を使用するのがよいでしょう。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

関連記事 - Python File