Pythonにおけるファイルパスの結合、ファイル名の取得、フォルダ名の取得などを紹介します。
ファイルパスの結合
os.path.join
で結合を行います。
便利な点と、仕様上の注意点を紹介します。
import os
path_1 = "/hoge/fuga/"
path_2 = "sample_1.txt"
# path_1, path_2を結合
marge_path_1 = os.path.join(path_1, path_2)
print(marge_path_1)
# /hoge/fuga/sample_1.txt
path_3 = "/hoge/fuga"
path_4 = "sample_1.txt"
# path_3, path_4を結合 セパレータを自動付与
marge_path_2 = os.path.join(path_3, path_4)
print(marge_path_2)
# /hoge/fuga/sample_1.txt
path_5 = "/hoge/fuga/"
path_6 = "/sample_1.txt"
# path5, path_6を結合 path_5が結合されない
marge_path_3 = os.path.join(path_5, path_6)
print(marge_path_3)
# /sample_1.txt
path_3,
path_4の結合のようにpath_3側のセパレータの有無を気にせず結合できる点がos.path.joinの便利な点です。
一方で、path_5,
path_6の結合のようにpath_6側の先頭にセパレータがついている場合path_5が結合されません。これはos.path.joinの仕様になります
os.path.joinの結合元の先頭にセパレータがついている場合パスが結合されない点には留意しておく必要があります。
ファイル名の取得
ディレクトリ構造とファイル名を含むパスからファイル名のみ取得します
本記事では、拡張子有り、拡張子無し両方のファイル名の取得方法を記載します
import os
path = "/hoge/fuga/sample.txt"
# ファイル名(拡張子有り)取得
filename_1 = os.path.basename( path )
print(filename_1)
# sample.txt
# ファイル名(拡張子無し)取得
filename_2 = os.path.splitext( os.path.basename(path) )[0]
print(filename_2)
# sample
拡張子無しのファイル名は、
拡張子ありのファイル名をos.path.splitextを使って .(ピリオド)で分割しています。
そして、"sample"と、".txt"に分割されたテキストの内"sample"を取得しています。
フォルダ(ディレクトリ)名の取得
次にフォルダ名の取得方法を紹介します
import os
path = "/hoge/fuga/sample.txt"
# フォルダ名取得
dirname = os.path.dirname(path)
print(dirname)
# /hoge/fuga
# ファイルを格納しているフォルダ名のみ取得
folodername = os.path.basename( os.path.dirname(path) )
print(folodername)
# fuga
0 件のコメント :
コメントを投稿