Python 從路徑獲取不帶副檔名的檔名
-
在 Python 中使用
pathlib.path().stem
方法從路徑中獲取沒有副檔名的檔名 -
使用 Python 中的
os.path.splitext()
和string.split()
方法從路徑中獲取不帶副檔名的檔名 -
在 Python 中使用
os.path.basename()
和os.path.splitext()
方法從路徑中獲取檔名
本教程將演示在 Python 中從檔案路徑中獲取不帶副檔名的檔名的各種方法。假設我們的目標是從以字串形式存在的檔案路徑列表中獲取檔名,比如從路徑 Desktop/folder/myfile.txt
中,我們只得到沒有 .txt
副檔名的檔名 myfile
。
在 Python 中使用 pathlib.path().stem
方法從路徑中獲取沒有副檔名的檔名
path().stem
方法將檔案路徑作為輸入,通過從檔案路徑中提取檔名來返回。例如,從路徑 Desktop/folder/myfile.txt
中,它將返回不含 .txt
副檔名的 myfile
。
下面的程式碼示例演示瞭如何使用 path().stem
從檔案路徑中獲取不含副檔名的檔名。
from pathlib import Path
file_path = "Desktop/folder/myfile.txt"
file_name = Path(file_path).stem
print(file_name)
輸出:
myfile
使用 Python 中的 os.path.splitext()
和 string.split()
方法從路徑中獲取不帶副檔名的檔名
os
模組的 path.splitext()
方法將檔案路徑作為字串輸入,並將檔案路徑和副檔名作為輸出。
由於我們要從檔案路徑中獲取檔名,所以可以先用 os.path.splitext()
方法將檔案路徑中的副檔名去掉。拆分結果的第一個元素就是沒有副檔名的檔案路徑。這個結果使用/
作為分隔符進一步分割它。最後一個元素是沒有副檔名的檔名。下面的程式碼示例演示瞭如何使用 path.splitext()
和 string.split()
方法從檔案路徑中獲取不帶副檔名的檔名。
import os
file_path = "Desktop/folder/myfile.txt"
file_path = os.path.splitext(file_path)[0]
file_name = file_path.split('/')[-1]
print(file_name)
輸出:
test
在 Python 中使用 os.path.basename()
和 os.path.splitext()
方法從路徑中獲取檔名
在 Python 中,os
模組的 path.basename()
方法將檔案路徑作為輸入,並返回從檔案路徑中提取的基名。例如,Desktop/folder/myfile.txt
的基名是 myfile.txt
。
由於我們要從檔案路徑中獲取檔名,可以使用 path.basename()
方法提取基名,使用 path.splitext()
提取檔名。下面的程式碼示例演示瞭如何使用 path.basename()
和 path.splitext()
方法從檔案路徑中獲取檔名。
import os
file_path = "Desktop/folder/myfile.txt"
basename = os.path.basename(file_path)
file_name = os.path.splitext(basename)[0]
print(file_name)
輸出:
myfile
myfile.tar.gz
,則上述所有方法都會返回 myfile.tar
作為檔名。假設我們需要從路徑 Desktop/folder/myfile.tar.gz
中獲取不帶 .
後面的部分的檔名,比如 myfile
而不是 myfile.tar
,可以使用 string.index()
方法從 myfile.tar
中只提取 myfile
。但是這個方法的缺點是,如果 .
是檔名的一部分,比如 my.file.tar.gz
,它將返回 my
作為檔名。
下面的程式碼示例,我們如何使用 string.index()
從上面解釋的方法的輸出 myfile.tar
中刪除 .tar
。
file_name = "myfile.tar"
index = file_name.index('.')
file_name = file_name[:index]
print(file_name)
file_name = "my.file.tar"
index = file_name.index('.')
file_name = file_name[:index]
print(file_name)
輸出:
myfile
my