python3のパス名操作いろいろ

この記事は何?

pythonでパス名を文字列操作するときはos.path以下の関数を用います. 提供されている関数がいくつかあり頭に入っていなかったので,実際に動かしてみたときのメモです.

ソースコード

import os

test_path = "hoge/piyo/fuga.ext"
print(test_path)

print("os.path.basename:", os.path.basename(test_path))
print("os.path.dirname:", os.path.dirname(test_path))
print("os.path.split:", os.path.split(test_path))
print("os.path.splitext:", os.path.splitext(test_path))

実行結果

hoge/piyo/fuga.ext
os.path.basename: fuga.ext
os.path.dirname: hoge/piyo
os.path.split: ('hoge/piyo', 'fuga.ext')
os.path.splitext: ('hoge/piyo/fuga', '.ext')

split関数はタプルを返しますが,1つ目の要素がdirname,2つ目の要素がbasenameに対応します. splitext関数は拡張子で分割します.

例えばパス名のbasenameから拡張子を取り除いたものが欲しいときは

os.path.splitext(os.path.basename(test_path))[0]

と呼べばいいんですね,多少冗長感もありますが….

その他

split関数は名前だけだとどこで分割するのか分かりにくくてつらい.