Python 取出檔案名稱 basename

本篇 ShengYu 介紹 Python 取出路徑中的檔案名稱 os.path.basename() 的用法與範例,並示範在 linux、macOS、windows 各平台下的差異。
以下範例是在 Python 3 環境下測試過。

取出路徑中的檔案名稱

os.path.basename() 為去除目錄的路徑,回傳檔案名稱(包含附檔名),
使用 os.path.basename() 時,需先 import os
由於 linux 與 windows 目錄字元不同,linux 與 macOS 一樣是使用 \ 斜線,windows 是使用 / 反斜線,
以下示範同樣的程式碼在 linux 與 windows 兩平台的執行結果差異,

程式碼如下,

python3-os-path-basename.py
1
2
3
4
5
6
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os

print('basename: ' + os.path.basename('/home/user/aaa.txt'))
print('basename: ' + os.path.basename('C:\\User\\Desktop\\aaa.txt'))

linux 與 macOS 平台輸出結果如下,

1
2
basename: aaa.txt
basename: C:\User\Desktop\aaa.txt

windows 平台輸出結果如下,

1
2
basename: /home/user/aaa.txt
basename: aaa.txt

不包含附檔名的檔案名稱

如果取出的檔案名稱不想要包含附檔名的話可以使用 split 切割字串來去除副檔名,關於 split 的詳細用法可以參考這篇,這邊範例就只示範 linux/macOS 的路徑,windows 路徑在 windows 下一樣適用,

python3-os-path-basename2.py
1
2
3
4
5
6
7
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os

unix_path = '/home/user/aaa.txt'
basename = os.path.basename(unix_path).split('.')[0]
print('basename: ' + basename)

輸出結果為

1
basename: aaa

你也可以使用 os.path.splitext() 來達成同樣的效果,

python3-os-path-basename3.py
1
2
3
4
5
6
7
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os

unix_path = '/home/user/aaa.txt'
basename = os.path.splitext(os.path.basename(unix_path))[0]
print('basename: ' + basename)

下一篇介紹 取出目錄的路徑 dirname

其他參考
python中的os.path模块用法(一)_Python_ziyuzhao123的专栏-CSDN博客
https://blog.csdn.net/ziyuzhao123/article/details/8811496
Python os.path() 模块 | 菜鸟教程
https://www.runoob.com/python/python-os-path.html

其它相關文章推薦
如果你想學習 Python 相關技術,可以參考看看下面的文章,
Python 新手入門教學懶人包
Python 取出目錄的路徑 dirname
Python 字串分割 split
Python 連接字串 join
Python 去除空白與去除特殊字元 strip
Python 取代字元或取代字串 replace