JP / EN

広告
2022/09/23

Python splitextでファイルパスから拡張子を取り出す

タグ:python

使い方


os.path.splitext([文字列])で文字列を1. 拡張子以外の部分 2. 拡張子(ドット含む) に分割して2要素のタプルを返してくれる。
    In [1]: import os
    In [2]:  os.path.splitext("a.jpg")
    Out[2]: ('a', '.jpg')
  

取り出された拡張子には"."が付くことに注意しよう。
split (分割) + ext (extension, 拡張子の略) でそのまんまである。よくsplittextとタイポしてしまう。

ちなみに余談であるが、拡張子を調べたいだけならわざわざosパッケージをインポートしなくても str型のsplitメソッドを用い
    In [3]: "a.jpg".split(".")[-1]
    Out[3]: 'jpg'
  
とすることもできる。この方がコード自体は短くなることが多い。 しかしsplitextならやっていることが名前の通りなので可読性はよいのかもしれない。

意地悪な例


試しに拡張子2つある.jpg.exeの様なファイル名だとどうなるか?と思い試してみたが、 だまされることなく正しい拡張子".exe"を取得できていた。
    In [1]: import os
    In [2]:  os.path.splitext("/home/user/a.jpg.exe")
    Out[2]: ('/home/user/a.jpg', '.exe')
  
ちなみにこのようなファイル名は古のマルウェアでは誤クリックにより実行されることを 見込んでよくつけられていた。



このエントリーをはてなブックマークに追加

https://wonderhorn.net/