[解決!Python]パスからディレクトリ名とファイル名を取得するには解決!Python

os.pathモジュールのdirname/basename/split関数と、pathlibモジュールのPath.parent/Path.name属性を使ってパスからディレクトリ名やファイル名を取得する方法を紹介する。

» 2022年12月06日 05時00分 公開
[かわさきしんじDeep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「解決!Python」のインデックス

連載目次

from os.path import dirname, basename

path = 'foo/bar/baz.txt'
dname = dirname(path)
fname = basename(path)
print(f'dir: {dname}, file: {fname}'# dir: foo/bar, file: baz.txt

from os.path import split

dname, fname = split(path)
print(f'dir: {dname}, file: {fname}'# dir: foo/bar, file: baz.txt

path = 'foo/bar/'
dname = dirname(path)
fname = basename(path)
print(f'dir: {dname}, file: {fname}'# dir: foo/bar, file:

dname, fname = split(path)
print(f'dir: {dname}, file: {fname}'# dir: foo/bar, file:

from pathlib import Path

path = Path('foo/bar/baz.txt')
print(f'dir: {path.parent}, file: {path.name}'# dir: foo/bar, file: baz.txt

path = Path('foo/bar/')
print(f'dir: {path.parent}, file: {path.name}'# dir: foo, file: bar


os.pathモジュールのdirname/basename/split関数

 os.pathモジュールにはdirname関数とbasename関数がある。これらを使うと、パスのディレクトリ名とファイル名を取得できる。

 これらの関数は共にパスを表す文字列(やPathオブジェクト)を引数に取り、dirname関数はそのディレクトリ名を返送し、basename関数はファイル名(に相当する部分)を返送する。

 以下に例を示す。

from os.path import dirname, basename

path = 'foo/bar/baz.txt'
dname = dirname(path)
fname = basename(path)
print(f'dir: {dname}, file: {fname}'# dir: foo/bar, file: baz.txt


 この例では「foo/bar/baz.txt」というパスに対してdirname関数とbasename関数を適用している。dirname関数により変数dnameにはディレクトリ名である「foo/bar」が、basename関数により変数fnameにはファイル名である「baz.txt」が代入されている。

 ディレクトリ名かファイル名のいずれかが必要であれば、これらを使えばよい。両方が必要であれば、同じos.pathモジュールのsplit関数を使用する。この関数は与えられたパスをディレクトリ名とファイル名に分割したものをタプルとして返送する。

 以下に例を示す。

from os.path import split

dname, fname = split(path)
print(f'dir: {dname}, file: {fname}'# dir: foo/bar, file: baz.txt


 結果は上と同様だ。

 注意する点としてはパスが区切り文字で終了する場合だ。この場合、パスはディレクトリ名しか含まれないと判断され、ファイル名は空となる。以下に例を示す。

path = 'foo/bar/'
dname = dirname(path)
fname = basename(path)
print(f'dir: {dname}, file: {fname}'# dir: foo/bar, file:

dname, fname = split(path)
print(f'dir: {dname}, file: {fname}'# dir: foo/bar, file:


Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。