Pythonでフルパスの末尾のファイル名、フォルダ名だけを抽出する方法。

やりかた

パスはsys.argv[1]で実行時に第一引数に入れる文字列を使う仕様で書いてます。

import sys,os
sp = os.sep#セパレータ
dirpath = sys.argv[1]
print("FullPath :",dirpath)
print("file name Exclude :",dirpath[dirpath.rfind(sp)+1:])

os.sepはそのOSで使われるセパレータを返す。この書き方 にするとLinuxだろうがWindowsだろうが悩まないのでおすすめ。

実行結果

引数に"/home/user/test.txt"を与えて実行してみる

$ python3 test.py /home/user/test.txt
/home/user/test.txt
test.txt

仕組み

使ったのはスライスという操作。文字列が入った変数をdirpath[N:N]的な感じ(Nは文字列の始点と終点を指定する)で操作して文字列が抽出できる。rfindで右から見た時に最初に出てくるセパレータの位置を特定して、そこを始点に文字列の最後まで抽出するって仕組み。ちなみに+1がなかったらセパレータ本体の位置を含んでしまうので/test.txtとなってしまう。