[Python]os.pathの使い方(ファイルパスの結合、ファイル名取得、フォルダ名取得)

2021年8月1日日曜日

Python

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


AIで副業ならココから!

まずは無料会員登録

プロフィール

メーカーで研究開発を行う現役エンジニア
組み込み機器開発や機会学習モデル開発に従事しています

本ブログでは最新AI技術を中心にソースコード付きでご紹介します


Twitter

カテゴリ

このブログを検索

ブログ アーカイブ

TeDokology