Python でファイル拡張子を取得する
このチュートリアルでは、Python でファイル名から拡張子を取得する方法を紹介します。
Python でファイルから拡張子を取り出すには os.path
モジュールを使用する
Python には、OS のファイルパスを操作するための便利なユーティリティ関数があらかじめ用意されているモジュール os.path
があります。ファイルパスを開いたり、保存したり、更新したり、ファイルパスから情報を取得したりすることができます。
今回はこのモジュールを使って、Python でファイルの拡張子を取得します。
os.path
には、与えられたファイルパスのルートと拡張子を分割する関数 splitext()
があります。この関数はルート文字列と拡張子文字列を含むタプルを返します。
拡張子が docx
のファイルパスの例を示しましょう。
/Users/user/Documents/sampledoc.docx
期待される出力は拡張子 .docx
でなければなりません。
拡張子 extension
と root
という名前で 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
オブジェクト内で parent
と name
という属性を呼び出すだけで、親ファイルのパスと実際のファイル名を取得することができます。
出力:
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
これで、リストの代わりに実際の拡張機能が表示されるようになりました。
要約すると、os
と pathlib
の 2つのモジュールは、Python でファイルパスからファイルの拡張子を取得するための便利なメソッドを提供します。
os
モジュールには、ファイル拡張子からルートとファイル名を分割する関数 splitext
があります。pathlib
は Path
オブジェクトを生成し、拡張子を suffixes
属性に格納します。
ファイル内に複数の拡張子を想定している場合は、属性 suffixes
を使用して複数の拡張子を簡単にサポートできるため、pathlib
を使用するのがよいでしょう。
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