os.path.basename()とos.path.dirname()の違いは何ですか?


139

違いは何であるos.path.basename()とはos.path.dirname()

私はすでに回答を検索していくつかのリンクを読みましたが、理解できませんでした。誰でも簡単に説明できますか?

回答:


273

どちらの関数も関数を使用してos.path.split(path)、パス名pathをペアに分割します。(head, tail)

このos.path.dirname(path)関数は、パスの先頭を返します。

例:のdirnameは'/foo/bar/item'です'/foo/bar'

os.path.basename(path)この関数は、パスの末尾を返します。

例:'/foo/bar/item'返品のベース名'item'

送信元http : //docs.python.org/2/library/os.path.html#os.path.basename


24
ディレクトリであるで置き換えるitemitem/、がos.path.split('foo/bar/item/')返されることに注意してください('foo/bar/item', '')
jkdev

1
パスが「foo.bar」などのファイルの場合はどうなりますか?
ZhaoGang 2018

4
@jkdevあなたは、パスの最後のディレクトリ名を取得したい場合は、[はい、あなたが使用する必要がありますos.path.basename(os.path.dirname(path))
tli2020

@ZhaoGangパス全体がファイル名だけの場合、os.path.basename(file_name)はファイル名を返します:here 'foo.bar'、およびos.path.dirname(file_name)は空の文字列を返します:''
jkdev 2018年

4

上記のブレノによって述べられたことを要約する

ファイルへのパスを持つ変数があるとします

path = '/home/User/Desktop/myfile.py'

os.path.basename(path) 文字列を返します 'myfile.py'

そして

os.path.dirname(path)文字列を返します'/home/User/Desktop'(末尾のスラッシュ '/'なし)

これらの関数は、フルパス名を指定してファイル名/ディレクトリ名を取得する必要がある場合に使用されます。

ファイルパスがファイル名だけの場合(たとえば、path = '/home/User/Desktop/myfile.py'単にを持っている代わりにmyfile.py)、os.path.dirname(path)空の文字列を返します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.