Pythonでファイルの拡張子のみを取得する方法

環境

  • Windows 10
  • Python 3.10.1

結論

  • osモジュールのos.path.splitext()を使用することで可能

実装

  • 呼び出し側

tests\test_xfile.py

from shared.Domain.xfile import XFile
from shared.Domain.xurl import XUrl

def test_ファイルオブジェクトから拡張子を取得できること():

    x_file = XFile(
        x_url=XUrl(
            href="https://www.meti.go.jp/press/2021/06/20210616004/20210616004-1.pdf"
        )
    )

    assert x_file.get_extension() == ".pdf"
  • splitextの返り値は拡張子と拡張子以外に分割されたタプル
import os
import urllib
from shared.Domain.xurl import XUrl
from shared.Domain.xregex import XRegex
from shared.Application.check_regex_service import CheckRegexService
from shared.Domain.xstr import XStr

class XFile:
    def __init__(self, x_url: XUrl):
        self.x_url = x_url

    def get_url(self):
        return self.x_url

    # ファイル名を返します(フォルダ、クエリストリング除く純粋なファイル名をurlデコードしたもの)
    def get_file_name(self):
        file_name = CheckRegexService().execute(
            XRegex(".+?(?=\?)"), xstr=XStr(self.x_url.get_href())
        )
        return urllib.parse.unquote(os.path.basename(file_name))

    def get_file_name_with_queryst(self):
        return os.path.basename(self.x_url.get_url())

    def get_alt(self):
        return self.alt

    # 拡張子を返します
    def get_extension(self):
        return os.path.splitext(self.get_file_name())[1]

以上です

使用するソースコード

以下の公開リポジトリに置いています

GitHub - masayan1126/tao-py-py: 作業自動化用 Python ライブラリ
作業自動化用 Python ライブラリ. Contribute to masayan1126/tao-py-py development by creating an account on GitHub.

Python学習におすすめの書籍

独習Python/山田祥寛【3000円以上送料無料】
bookfan 1号店 楽天市場店
¥ 3,300(2023/01/31 18:22時点)
タイトルとURLをコピーしました