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