環境
- Windows 10
- Python 3.10.1
結論
osモジュールのos.path.basename()を使用する
実装
呼び出し側
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_file_name() == "20210616004-1.pdf"
ファイルクラス
- get_file_name内で、正規表現でクエリストリングをカットする
- 1の結果に対し、path.basenameでファイル名に付帯するフォルダパスをカットする
shared\Domain\xfile.py
import os
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_file_name(self):
file_name = CheckRegexService().execute(
XRegex(".+?(?=\?)"), xstr=XStr(self.x_url.get_href())
)
return os.path.basename(file_name)
...割愛
以上です
まとめ
いかがでしたでしょうか。本記事では、Pythonでパス文字列からファイル名のみを取得する方法について紹介しています。ぜひ参考にしてみてください