Python根據(jù)文件路徑獲取不帶后綴名的文件名的兩種方法
在 Python 中根據(jù)文件路徑獲取不帶后綴名的文件名,可以使用以下兩種主流方法,均支持跨平臺路徑處理(Windows/Linux/macOS):
方法一:使用 os.path 模塊(傳統(tǒng)方法)
import os
def get_filename_without_extension(file_path):
"""
獲取不帶擴展名的文件名
:param file_path: 文件路徑(支持絕對路徑/相對路徑)
:return: 不帶擴展名的文件名
"""
# 獲取完整的文件名(包含擴展名)
full_filename = os.path.basename(file_path)
# 分離文件名和擴展名
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):
"""
獲取不帶擴展名的文件名
:param file_path: 文件路徑
:return: 不帶擴展名的文件名
"""
# 使用.stem屬性直接獲取無擴展名文件名
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)點 - 無擴展名文件返回完整文件名
- 多擴展名文件(如
.tar.gz)只移除最后一個擴展名
路徑解析細(xì)節(jié):
os.path.basename()提取路徑中的文件名部分os.path.splitext()嚴(yán)格分離最后一個點后的擴展名pathlib.Path.stem直接獲取無擴展名部分
邊界情況處理:
- 空路徑返回空字符串
- 目錄路徑返回目錄名(不含擴展名)
- 純擴展名文件(如
.htaccess)返回空字符串
擴展功能:
如果需要獲取文件名中的所有部分(如處理復(fù)合擴展名),可以使用:
# 獲取不帶任何擴展名的完整基礎(chǔ)名
base_name = Path(file_path).name.split('.')[0]
# 獲取所有擴展名(適用于多擴展名場景)
suffixes = Path(file_path).suffixes # 返回列表 ['.tar', '.gz']
根據(jù)實際需求選擇方法:
- 兼容舊版 Python使用
os.path方案 - 新項目推薦使用更直觀的
pathlib方案 - 需要精確控制擴展名處理邏輯時可結(jié)合字符串操作
以上就是Python根據(jù)文件路徑獲取不帶后綴名的文件名的兩種方法的詳細(xì)內(nèi)容,更多關(guān)于Python文件路徑獲取文件名的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
使用Pandas實現(xiàn)Excel中的數(shù)據(jù)透視表的項目實踐
數(shù)據(jù)透視表是一種非常強大的工具,它可以幫助我們快速匯總、分析和可視化大量數(shù)據(jù),本文主要介紹了使用Pandas實現(xiàn)Excel中的數(shù)據(jù)透視表的項目實踐,感興趣的可以了解一下2025-05-05
Python 生成 -1~1 之間的隨機數(shù)矩陣方法
今天小編就為大家分享一篇Python 生成 -1~1 之間的隨機數(shù)矩陣方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
如何基于Python Matplotlib實現(xiàn)網(wǎng)格動畫
這篇文章主要介紹了如何基于Python Matplotlib實現(xiàn)網(wǎng)格動畫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07
人工智能學(xué)習(xí)Pytorch進(jìn)階操作教程
這篇文章主要為大家介紹了人工智能學(xué)習(xí)Pytorch進(jìn)階操作的詳解教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11
python 從遠(yuǎn)程服務(wù)器下載日志文件的程序
本文提供了一種方法,該程序可實現(xiàn)抓取服務(wù)器的日志文件到本地,根據(jù)該程序可自行擴展對日志文件的自動化分析。常用于數(shù)據(jù)挖掘、生產(chǎn)維護(hù)等2013-02-02
基于PyQt5制作Excel文件數(shù)據(jù)去重小工具
這篇文章主要介紹了如何利用PyQt5模塊制作一個Excel文件數(shù)據(jù)去重小工具,可以將單個或者多個Excel文件數(shù)據(jù)進(jìn)行去重操作,去重的列可以通過自定義制定,需要的可以參考一下2022-04-04

