Python根據(jù)文件路徑獲取不帶后綴名的文件名的兩種方法
在 Python 中根據(jù)文件路徑獲取不帶后綴名的文件名,可以使用以下兩種主流方法,均支持跨平臺路徑處理(Windows/Linux/macOS):
方法一:使用 os.path 模塊(傳統(tǒng)方法)
import os
def get_filename_without_extension(file_path):
"""
獲取不帶擴(kuò)展名的文件名
:param file_path: 文件路徑(支持絕對路徑/相對路徑)
:return: 不帶擴(kuò)展名的文件名
"""
# 獲取完整的文件名(包含擴(kuò)展名)
full_filename = os.path.basename(file_path)
# 分離文件名和擴(kuò)展名
filename, extension = os.path.splitext(full_filename)
return filename
# 使用示例
if __name__ == "__main__":
path1 = "/home/user/images/landscape.jpg"
path2 = "C:\\Documents\\report.docx"
path3 = "./data/.gitignore" # 測試隱藏文件
print(get_filename_without_extension(path1)) # 輸出: landscape
print(get_filename_without_extension(path2)) # 輸出: report
print(get_filename_without_extension(path3)) # 輸出: .gitignore
方法二:使用 pathlib 模塊(Python 3.4+ 推薦)
from pathlib import Path
def get_filename_without_extension(file_path):
"""
獲取不帶擴(kuò)展名的文件名
:param file_path: 文件路徑
:return: 不帶擴(kuò)展名的文件名
"""
# 使用.stem屬性直接獲取無擴(kuò)展名文件名
return Path(file_path).stem
# 使用示例
if __name__ == "__main__":
path1 = "/var/log/system.log"
path2 = "relative/path/file.tar.gz"
path3 = "no_extension_file"
print(get_filename_without_extension(path1)) # 輸出: system
print(get_filename_without_extension(path2)) # 輸出: file.tar
print(get_filename_without_extension(path3)) # 輸出: no_extension_file
關(guān)鍵特性說明:
跨平臺兼容性:
- 自動處理不同操作系統(tǒng)的路徑分隔符(
/和\) - 正確處理網(wǎng)絡(luò)路徑(
\\server\share\file)
特殊文件處理:
- 隱藏文件(如
.gitignore)保留前導(dǎo)點(diǎn) - 無擴(kuò)展名文件返回完整文件名
- 多擴(kuò)展名文件(如
.tar.gz)只移除最后一個擴(kuò)展名
路徑解析細(xì)節(jié):
os.path.basename()提取路徑中的文件名部分os.path.splitext()嚴(yán)格分離最后一個點(diǎn)后的擴(kuò)展名pathlib.Path.stem直接獲取無擴(kuò)展名部分
邊界情況處理:
- 空路徑返回空字符串
- 目錄路徑返回目錄名(不含擴(kuò)展名)
- 純擴(kuò)展名文件(如
.htaccess)返回空字符串
擴(kuò)展功能:
如果需要獲取文件名中的所有部分(如處理復(fù)合擴(kuò)展名),可以使用:
# 獲取不帶任何擴(kuò)展名的完整基礎(chǔ)名
base_name = Path(file_path).name.split('.')[0]
# 獲取所有擴(kuò)展名(適用于多擴(kuò)展名場景)
suffixes = Path(file_path).suffixes # 返回列表 ['.tar', '.gz']
根據(jù)實(shí)際需求選擇方法:
- 兼容舊版 Python使用
os.path方案 - 新項(xiàng)目推薦使用更直觀的
pathlib方案 - 需要精確控制擴(kuò)展名處理邏輯時可結(jié)合字符串操作
以上就是Python根據(jù)文件路徑獲取不帶后綴名的文件名的兩種方法的詳細(xì)內(nèi)容,更多關(guān)于Python文件路徑獲取文件名的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python GUI庫圖形界面開發(fā)之PyQt5控件數(shù)據(jù)拖曳Drag與Drop詳細(xì)使用方法與實(shí)例
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5控件數(shù)據(jù)拖曳Drag與Drop詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下2020-02-02
使用wxPython和OpenCV實(shí)現(xiàn)手勢識別相機(jī)功能
在這篇博客中,我將分享一個有趣的?Python?項(xiàng)目:通過?wxPython?創(chuàng)建圖形界面,利用?OpenCV?的計(jì)算機(jī)視覺技術(shù)實(shí)現(xiàn)實(shí)時手勢識別,以下是項(xiàng)目的完整實(shí)現(xiàn)過程,包括代碼分析、使用說明和可能的優(yōu)化建議,需要的朋友可以參考下2025-04-04
Python采集貓眼兩萬條數(shù)據(jù) 對《無名之輩》影評進(jìn)行分析
這篇文章主要給大家介紹了關(guān)于利用Python榮國采集兩萬條貓眼數(shù)據(jù),對《無名之輩》影評進(jìn)行分析的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
Python一鍵搞定Excel數(shù)據(jù)自動分配
這篇文章主要為大家詳細(xì)介紹了Python一鍵搞定Excel數(shù)據(jù)自動分配的相關(guān)方法,可以輕松實(shí)現(xiàn)水果分箱,文中的示例代碼講解詳細(xì),有需要的小伙伴可以了解下2025-10-10
Python實(shí)現(xiàn)SMTP郵件發(fā)送
這篇文章主要介紹了基于python實(shí)現(xiàn)SMTP發(fā)送郵件教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06
Python中常用的數(shù)據(jù)結(jié)構(gòu)與算法優(yōu)化技巧指南
Python是一種強(qiáng)大而靈活的編程語言,它提供了豐富的數(shù)據(jù)結(jié)構(gòu)和算法庫,但是在處理大規(guī)模數(shù)據(jù)或者需要高效運(yùn)行的情況下,需要考慮一些優(yōu)化技巧,本文將介紹一些Python中常用的數(shù)據(jù)結(jié)構(gòu)與算法優(yōu)化技巧,需要的朋友可以參考下2024-05-05

